梦想小镇WIKI_BWIKI_哔哩哔哩 gamecenter_wiki_township https://wiki.biligame.com/township/%E9%A6%96%E9%A1%B5 MediaWiki 1.37.0 first-letter 媒体文件 特殊 讨论 用户 用户讨论 梦想小镇 梦想小镇讨论 文件 文件讨论 MediaWiki MediaWiki讨论 模板 模板讨论 帮助 帮助讨论 分类 分类讨论 属性 属性讨论 表单 表单讨论 概念 概念讨论 smw/schema smw/schema talk Rule Rule talk Widget Widget talk 模块 模块讨论 Gadget Gadget talk Gadget definition Gadget definition talk Topic 首页 0 1 1 2019-08-14T06:40:05Z MediaWiki default 0 wikitext text/x-wiki <strong>已安装MediaWiki。</strong> 请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息! == 入门 == * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题] * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言] * [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏] d9b7ee8b27b108d6a4c6b4630283e3df8fbad568 34 1 2020-05-30T06:08:21Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h2">建造</div> {{按钮|房屋|房屋}} {{按钮|社区建筑|社区建筑}} {{按钮|工厂|工厂}} {{按钮|动物园|装饰物}} {{按钮|特殊|特殊}} <div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}} </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于WIKI</div> <div class="bili-divider"></div> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> <div class="sidebar-content"></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于游戏</div> <div class="bili-divider"></div> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> <div class="sidebar-content"></div> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 4e01effb48eb6f1fda7449bdc50f07f2acae42f1 MediaWiki:Smw import skos 8 2 2 2019-08-14T07:06:51Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki http://www.w3.org/2004/02/skos/core#|[http://www.w3.org/TR/skos-reference/skos.rdf Simple Knowledge Organization System (SKOS)] altLabel|Type:Monolingual text broader|Type:Annotation URI broaderTransitive|Type:Annotation URI broadMatch|Type:Annotation URI changeNote|Type:Text closeMatch|Type:Annotation URI Collection|Class Concept|Class ConceptScheme|Class definition|Type:Text editorialNote|Type:Text exactMatch|Type:Annotation URI example|Type:Text hasTopConcept|Type:Page hiddenLabel|Type:String historyNote|Type:Text inScheme|Type:Page mappingRelation|Type:Page member|Type:Page memberList|Type:Page narrower|Type:Annotation URI narrowerTransitive|Type:Annotation URI narrowMatch|Type:Annotation URI notation|Type:Text note|Type:Text OrderedCollection|Class prefLabel|Type:String related|Type:Annotation URI relatedMatch|Type:Annotation URI scopeNote|Type:Text semanticRelation|Type:Page topConceptOf|Type:Page [[Category:Imported vocabulary]] 4327e3118f75f756b955108e04693a361d19c2cb MediaWiki:Smw import foaf 8 3 3 2019-08-14T07:06:54Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki http://xmlns.com/foaf/0.1/|[http://www.foaf-project.org/ Friend Of A Friend] name|Type:Text homepage|Type:URL mbox|Type:Email mbox_sha1sum|Type:Text depiction|Type:URL phone|Type:Text Person|Category Organization|Category knows|Type:Page member|Type:Page [[Category:Imported vocabulary]] 2be18fc91e334e0c7f23bea734cdc2a301fd86e8 MediaWiki:Smw import owl 8 4 4 2019-08-14T07:06:54Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki http://www.w3.org/2002/07/owl#|[http://www.w3.org/2002/07/owl Web Ontology Language (OWL)] AllDifferent|Category allValuesFrom|Type:Page AnnotationProperty|Category backwardCompatibleWith|Type:Page cardinality|Type:Number Class|Category comment|Type:Page complementOf|Type:Page DataRange|Category DatatypeProperty|Category DeprecatedClass|Category DeprecatedProperty|Category differentFrom|Type:Page disjointWith|Type:Page distinctMembers|Type:Page equivalentClass|Type:Page equivalentProperty|Type:Page FunctionalProperty|Category hasValue|Type:Page imports|Type:Page incompatibleWith|Type:Page intersectionOf|Type:Page InverseFunctionalProperty|Category inverseOf|Type:Page isDefinedBy|Type:Page label|Type:Page maxCardinality|Type:Number minCardinality|Type:Number Nothing|Category ObjectProperty|Category oneOf|Type:Page onProperty|Type:Page Ontology|Category OntologyProperty|Category owl|Type:Page priorVersion|Type:Page Restriction|Category sameAs|Type:Page seeAlso|Type:Page someValuesFrom|Type:Page SymmetricProperty|Category Thing|Category TransitiveProperty|Category unionOf|Type:Page versionInfo|Type:Page [[Category:Imported vocabulary]] c109cc4c667590611dc35b3d06655129c572809a 属性:Foaf:knows 102 5 5 2019-08-14T07:06:55Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki * [[Imported from::foaf:knows]] * [[Property description::A person known by this person (indicating some level of reciprocated interaction between the parties).@en]] [[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:knows}} e9134ab265b9bc923266ffa2bbcde2b59557202a 属性:Foaf:name 102 6 6 2019-08-14T07:06:55Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki * [[Imported from::foaf:name]] * [[Property description::A name for some thing or agent.@en]] [[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:name}} 2a8b3537cd6d95e741d56a2fe5b824216824c2e3 属性:Foaf:homepage 102 7 7 2019-08-14T07:06:55Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki * [[Imported from::foaf:homepage]] * [[Property description::URL of the homepage of something, which is a general web resource.@en]] [[Category:Imported vocabulary]] {{DISPLAYTITLE:foaf:homepage}} 083058f1760bcc251820336dbe29dee9a38516e6 属性:Owl:differentFrom 102 8 8 2019-08-14T07:06:56Z 127.0.0.1 0 Semantic MediaWiki default vocabulary import wikitext text/x-wiki * [[Imported from::owl:differentFrom]] * [[Property description::The property that determines that two given individuals are different.@en]] [[Category:Imported vocabulary]] {{DISPLAYTITLE:owl:differentFrom}} d706757d4fb8eff4bb5622ea05ea7cab2f3b1a0c MediaWiki:Sitenotice 8 9 9 2020-05-21T04:02:10Z 394339 5 创建页面,内容为“本WIKI由[https://space.bilibili.com/13253902 Daikou]申请于2020年05月20日创建,编辑权限开放,如遇[https://wiki.biligame.com/wiki/%E5%85%B3%E4%BA%8…” wikitext text/x-wiki 本WIKI由[https://space.bilibili.com/13253902 Daikou]申请于2020年05月20日创建,编辑权限开放,如遇[https://wiki.biligame.com/wiki/%E5%85%B3%E4%BA%8E%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E7%99%BB%E5%BD%95%E7%8A%B6%E6%80%81%E5%BC%82%E5%B8%B8%E7%9A%84bug%E8%AF%B4%E6%98%8E Chrome浏览器登陆后无法编辑点这里] [https://t.bilibili.com/373216766651091864?tab=2 BWIKI反馈留言板] 1d0b9d695a433f73487b883200e3cd7d2e2685d4 房屋/小屋 0 10 10 2020-05-22T07:16:42Z 13253902 7 创建页面 wikitext text/x-wiki {{房屋 |等级=4、4、4、5 |金币=5 |人口=5 |经验=5 |时间=1 |占地=1 }} 18fa02e2155f9296b8ed31ceaf7865b831cfa454 13 10 2020-05-22T07:38:18Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=小屋 |等级=4、4、4、5 <!-- 用顿号隔开 --> |金币=5 |人口=5 |经验=5 |时间=1 <!-- 换算到分钟 --> |占地=1 }} 718f6989c67c0702e4f8ed43d73087439a46bed2 49 13 2020-06-05T05:48:13Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=小屋 |等级=4、4、4、5 <!-- 用顿号隔开 --> |金币=5 |人口=5 |经验=5 |时间(天)= |时间(时)= |时间(分)=1 |时间(秒)= |占地=1 }} c669d5a67603b54900c38ec93fb7c30327f93b53 模板:房屋 10 11 11 2020-05-22T07:26:33Z 13253902 7 创建页面 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" | rowspan="2" | 图片 ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} 2149f388a14541b1c13a71c9789a1263757b0a52 12 11 2020-05-22T07:28:40Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" style="text-align: center;" | rowspan="2" | 图片 ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} ebc48cac3c9b1e98a7d021da7aa5fd2093aeeae3 14 12 2020-05-23T03:14:59Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" style="text-align: center;" | rowspan="2" | 图片 ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} [[分类:房屋]] 67b13867cfe8533ed71d375e6ee98762f6f4fd27 20 14 2020-05-30T04:41:22Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" style="text-align: center;" | rowspan="2" | [[文件:{{{中文|}}}.png]] ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} [[分类:房屋]] 782cffff4c1ed65e459bac8324453cbba41f6c02 25 20 2020-05-30T04:55:09Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" style="text-align: center;width:100%" | rowspan="2" | [[文件:{{{中文|}}}.png]] ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} [[分类:房屋]] 849f7f2357e2064cc666434cca3cb0863afc597a 28 25 2020-05-30T05:13:25Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} {| class="wikitable" style="text-align: center;width:100%" | rowspan="2" | <includeonly>[[文件:{{{中文|}}}.png]]</includeonly> ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} <includeonly>[[分类:房屋]]</includeonly> 4893546e47b4c3358bc024e825f2b8d8c4af0de5 29 28 2020-05-30T05:30:02Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-3"> <includeonly>[[文件:{{{中文|}}}.png]]</includeonly> </div> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 43db158156fceae4d7a9138a643c2b6d89d608c1 30 29 2020-05-30T05:31:34Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png]]</includeonly> |} </div> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 280775cfa5decc770a629749abab2d93587b134b 31 30 2020-05-30T05:39:32Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png]]</includeonly> |} </div> <div class="col-xs-12 col-sm-8 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 13744c3cf14f43cd186524fee6b6797e79430cf0 32 31 2020-05-30T05:40:46Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-8 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{等级|}}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 22ccc76392f83dd5868cd360d33bd77c775ffacc 38 32 2020-06-04T07:03:50Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-8 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> dbd6c1b18fdac9b3fed4bd7d9185b06b9965fc6c 40 38 2020-06-04T07:13:17Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 805df94d5522e42551e055497b25586b465b07b2 41 40 2020-06-04T07:29:23Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 3726e6ace0ecac94ee3a0fd3b91f363d2a407bcc 42 41 2020-06-05T04:30:20Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} {{#arraysize:{{#arraymap:{{{等级|}}}|、|@||}}}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> ddf2248837673f9bf7c6126c552852abe9d1a9c2 43 42 2020-06-05T04:30:59Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} {{#arraysize:{{{等级|}}}}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> dabaa79be2ad3149205fa0d476bcd806ab0d9d63 44 43 2020-06-05T04:31:14Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 3726e6ace0ecac94ee3a0fd3b91f363d2a407bcc 45 44 2020-06-05T04:40:08Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 7bd0ac44ac4a770ec40d1471d02e097e2152f7e7 46 45 2020-06-05T04:40:33Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{{时间|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 8c19d268dca08d0072c0c888058526543e2e7d40 47 46 2020-06-05T05:34:36Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{人口|}}} | {{{经验|}}} | {{#expr: floor({{{时间|}}}/1440) }}天{{#expr: floor(({{{时间|}}}/1440 -{{#expr: floor({{{时间|}}}/1440) }})*24) }}时 | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 3dcb84c1f2bf5393d30c6ab9f4f9fec35b7e09a9 48 47 2020-06-05T05:43:50Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |时间={{{时间|}}} |占地={{{占地|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{{时间|}}} | {{{人口|}}} | {{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 214003123b21b4a67ddd7be205f5eebd06795941 50 48 2020-06-05T05:51:07Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | {{{人口|}}} | {{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> c24171a99ae638fe50f8c4f40e4a941d50e24d73 房屋/科德角式小屋 0 12 15 2020-05-28T02:37:32Z 13253902 7 创建页面 wikitext text/x-wiki {{房屋 |中文=科德角式小屋 |等级=1、5、6、7、8 <!-- 用顿号隔开 --> |金币=10 |人口=10 |经验=10 |时间=10 <!-- 换算到分钟 --> |占地=1 }} 14d3f533055192c67d5942953750982c8e92ac10 常用编辑 0 13 16 2020-05-30T04:23:41Z 13253902 7 创建页面 wikitext text/x-wiki __TOC__ ==整站== {| class="wikitable text-center" width=100% |- | width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]] |- | [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]] | | | |} ==新增== {| class="wikitable text-center" width=100% |- ! width=25% | ! width=25% | ! width=25% | ! width=25% | |- | | | | |- |<inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | <inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | | |} ==== {| class="wikitable text-center" width=100% |- | width=25% | | width=25% | | width=25% | | width=25% | |- | | | | |} 86d68a2493b9fa5ebd6f2d0b7bffda25404f2f6d MediaWiki:Sidebar 8 14 17 2020-05-30T04:25:44Z 13253902 7 创建页面,内容为“* 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI…” wikitext text/x-wiki * 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页 * 其他 ** 常用编辑|常用编辑 b2e0c7eff7bfcd5798b6c67df61f20a81f242fc2 18 17 2020-05-30T04:29:08Z 13253902 7 wikitext text/x-wiki * 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页 * 建造 ** 房屋 ** 社区建筑 ** 工厂 ** 动物园 ** 装饰物 ** 特殊 * 物品 ** 产品 * 统计 ** 工厂升级金属表 ** 扩地所需材料表 * 其他 ** 常用编辑|常用编辑 7e283b2c29df8f4d4c9b35da16a4bdb2cf7dd8f1 19 18 2020-05-30T04:32:19Z 13253902 7 wikitext text/x-wiki * 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页 * 建造 ** 房屋|房屋 ** 社区建筑|社区建筑 ** 工厂|工厂 ** 动物园|动物园 ** 装饰物|装饰物 ** 特殊|特殊 * 物品 ** 产品|产品 * 统计 ** 工厂升级金属表|工厂升级金属表 ** 扩地所需材料表|扩地所需材料表 * 其他 ** 常用编辑|常用编辑 7435d427275bc3909bf5d2e07e21229f066fc9fd 文件:房屋 科德角式小屋.png 6 15 21 2020-05-30T04:43:05Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:首页背景.jpg 6 16 22 2020-05-30T04:49:27Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 MediaWiki:Common.css 8 17 23 2020-05-30T04:50:53Z 13253902 7 创建页面,内容为“/* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg")…” css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.9527)!important;} .wiki-header{ background:transparent!important;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 椭圆图片 */ .rounded-circle{ border-radius:50%; } ebb7766e48d2b1d30429df5f8e0726ebcfab5122 24 23 2020-05-30T04:54:09Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 椭圆图片 */ .rounded-circle{ border-radius:50%; } b0443807958a73c0c83e6ebff079f1cb24706c45 模板:面包屑 10 18 26 2020-05-30T04:56:52Z 13253902 7 创建页面 wikitext text/x-wiki <!-- 待定 --> 35eec436fdd7e41fdff417fa6541c1f1ce7109af 文件:房屋 小屋.png 6 19 27 2020-05-30T05:06:35Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 模板:按钮 10 20 33 2020-05-30T05:45:00Z 13253902 7 创建页面 wikitext text/x-wiki <includeonly>[[{{{1}}}|<span class="bili-section-normal section-wrap" style="margin:5px 5px 5px 0px">{{{2}}}</span>]]</includeonly><noinclude><pre>[[{{{1}}}|<span class="bili-section-normal section-wrap" style="margin:5px 5px 5px 0px">{{{2}}}</span>]]</pre></noinclude> 22fe6657a0225588440ecfe1e62f2627b4ed133d 文件:星级.png 6 21 35 2020-06-04T05:38:09Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 模板:小星级 10 22 36 2020-06-04T07:01:08Z 13253902 7 创建页面 wikitext text/x-wiki <div style="position: relative;display:inline-block;text-align:center;"> [[文件:星级.png|32px|link=]] <span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span> </div> 29f7d45964202e7d9d40e2cab558a821a6fc61f3 37 36 2020-06-04T07:02:04Z 13253902 7 wikitext text/x-wiki <noinclude>{{小星级|22}}</noinclude><includeonly> <div style="position: relative;display:inline-block;text-align:center;"> [[文件:星级.png|32px|link=]] <span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span> </div></includeonly> 4559054450312853f0d4f98a16bdcc6f7dfbd500 39 37 2020-06-04T07:06:21Z 13253902 7 wikitext text/x-wiki <noinclude>{{小星级|2}}{{小星级|22}}{{小星级|222}}</noinclude><includeonly> <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|32px|link=]]<span style="position: absolute;inline-size: 32px;text-shadow: 1px 1px 1px brown;left: -2px;top: 7px;color:white;">{{{1|}}}</span> </div></includeonly> 39db2917bc8b3464599d9a71202ebb6aad54e257 房屋/科德角式小屋 0 12 51 15 2020-06-05T06:00:24Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=科德角式小屋 |等级=1、5、6、7、8 <!-- 用顿号隔开 --> |金币=10 |人口=10 |经验=10 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= |占地=1 }} 14f854af0da39e8ee8c23bdf09c7300f1e952f06 模板:房屋 10 11 52 50 2020-06-05T06:05:53Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | {{{人口|}}} | {{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 5a33e948a178332fb742b5e134a01633f3818218 53 52 2020-06-05T06:10:34Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> f0f5e3e4be1f1edc96ff4774fd252ddb27467749 64 53 2020-06-05T07:28:55Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 204e3ebcc6cfac629146286d6b9ca5ba17ce3e5c 66 64 2020-06-05T07:31:52Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{{最大数量|}}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> ca4ae7898dc06a534654b0706c7a04998aeec6fc 67 66 2020-06-05T07:32:16Z 13253902 7 撤销[[Special:Contributions/13253902|13253902]]([[User talk:13253902|讨论]])的版本66 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 204e3ebcc6cfac629146286d6b9ca5ba17ce3e5c 房屋 0 23 54 2020-06-05T07:06:21Z 13253902 7 创建页面 wikitext text/x-wiki {{#ask:[[分类:房屋]] |?中文 |?金币 |?人口 |link=none |sort=金币 |headers=hide |template=房屋表 |format=template |limit=1000 }} 23f04849ea85697a9117ae80859e3b83456ded67 55 54 2020-06-05T07:13:13Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;" ! 房屋 ! 解锁等级 ! 所需金币 ! 获得人口 ! 建造时间 |- {{#ask:[[分类:房屋]] |?中文 |?等级 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |headers=hide |template=房屋表 |format=template |limit=1000 }} |} 472a0d6b67eda9d95c3c305d613e83784e630434 56 55 2020-06-05T07:14:12Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;" ! 房屋 ! 解锁等级 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?等级 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |headers=hide |template=房屋表 |format=template |limit=1000 }} |} 85e34f8224fec8a14ed347f9591ae12af6d338ec 60 56 2020-06-05T07:23:02Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;" ! 房屋 ! 解锁等级 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?等级 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=desc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} e45a5ae8ee03948508e678fbc1865c68b863f424 62 60 2020-06-05T07:27:15Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 房屋 ! 解锁等级 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?等级 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=desc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} a31702acd8e3e89e793cf3cb8a8c9256416f1371 65 62 2020-06-05T07:29:44Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=desc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} 07d6e6ac8cd261e6eeb127fc9c3b124477b98612 模板:房屋表 10 24 57 2020-06-05T07:17:33Z 13253902 7 创建页面 wikitext text/x-wiki |- |{{{1|}}} |{{{2|}}} |{{{3|}}} |{{{4|}}} |{{#if:{{{6|}}}|{{{6|}}}天}}{{#if:{{{7|}}}|{{{7}}}时}}{{#if:{{{8|}}}|{{{8|}}}分}}{{#if:{{{9|}}}|{{{9|}}}秒}} 11f69d2f7fd6cad943c90d48604c814244ba2b9f 58 57 2020-06-05T07:18:34Z 13253902 7 wikitext text/x-wiki |- |{{{1|}}} |{{{2|}}} |{{{3|}}} |{{{4|}}} |{{#if:{{{6|}}}|{{{6|}}}天}}{{#if:{{{7|}}}|{{{7}}}时}}{{#if:{{{8|}}}|{{{8|}}}分}}{{#if:{{{9|}}}|{{{9|}}}秒}} |- 1663dd1018b9fa07a360cf4fc0cfbbb7c2cc72e4 59 58 2020-06-05T07:21:46Z 13253902 7 wikitext text/x-wiki |- |{{{2|}}} |{{{3|}}} |{{{4|}}} |{{{5|}}} |{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} |- 3d2a036b8b3b6a367fbab892c51fc9f7c653a72f 61 59 2020-06-05T07:25:15Z 13253902 7 wikitext text/x-wiki |- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] |{{{3|}}} |{{{4|}}} |{{{5|}}} |{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} |- 53e04ac765971d7c306d3c1d74e37c413821b34a 63 61 2020-06-05T07:27:44Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | {{{3|}}} | {{{4|}}} | +{{{5|}}} | {{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} |- </includeonly> b3589a5b8bcc061aad9cfefc7aee861d7132fa28 文件:装饰物.png 6 25 68 2020-06-05T15:30:26Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 86 68 2020-06-05T17:11:26Z 13253902 7 13253902上传[[文件:装饰物.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋.png 6 26 69 2020-06-05T15:30:27Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 81 69 2020-06-05T17:11:24Z 13253902 7 13253902上传[[文件:房屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:耕种.png 6 27 70 2020-06-05T15:30:27Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 82 70 2020-06-05T17:11:24Z 13253902 7 13253902上传[[文件:耕种.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:工厂.png 6 28 71 2020-06-05T15:30:27Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 83 71 2020-06-05T17:11:24Z 13253902 7 13253902上传[[文件:工厂.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:社区建筑.png 6 29 72 2020-06-05T15:30:28Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 84 72 2020-06-05T17:11:25Z 13253902 7 13253902上传[[文件:社区建筑.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:特殊.png 6 30 73 2020-06-05T15:30:28Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 85 73 2020-06-05T17:11:25Z 13253902 7 13253902上传[[文件:特殊.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 模板:首页建造图标 10 31 74 2020-06-05T15:50:09Z 13253902 7 创建页面 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div style="text-align:center;width:30%;display:inline-block;padding:8px;">[[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]<br><big>[[{{{1|}}}|{{{2|}}}]]</big></div></includeonly> 905bea3d19221efa0fdac433a189c98d50fcead1 76 74 2020-06-05T16:28:52Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:6px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s linear 0s; border: 1px solid #a8a9e3; background: khaki;} }}</includeonly> 835eb9666759b3a8c54e78442a7d564100b8f6c7 77 76 2020-06-05T16:51:02Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:4px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s linear 0s; border: 1px solid #a8a9e3; background: khaki;} }}</includeonly> 616de8a21154b5c9e20c3998c2cc16acf4966f5e 78 77 2020-06-05T16:52:50Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border: 1px solid darkgray;border-radius: 20px;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s linear 0s; border: 1px solid #a8a9e3; background: khaki;} }}</includeonly> 9f89502a024b968506d4fa996aca81ed449af64b 79 78 2020-06-05T16:59:54Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border:1px solid rgba(0, 0, 0, 0.16);border-radius: 0px;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s linear 0s; border: 1px solid #a8a9e3; background: khaki;} }}</includeonly> 4fdb37a5bf2488edf96c940d158c8cd17d27d9be 80 79 2020-06-05T17:06:26Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;border:1px solid rgba(0, 0, 0, 0.16);border-radius: 0px;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s linear 0s; border: 1px solid #a8a9e3; background: khaki;} hr{ background-color:rgba(0, 0, 0, 0.16);} }}</includeonly> a57ce1687b77a105c318f6cd761ed0293dd6a9b8 88 80 2020-06-11T16:35:44Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;background:#e8dbb5;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build:hover{ transition: all 0.3s; -webkit-transition:all 0.3s; /* Safari */ background: khaki;} hr{ background-color:rgba(0, 0, 0, 0.16);} }}</includeonly> 8e4f78ce8209bcdbd9c46aa327e95488008ea0f7 90 88 2020-06-11T16:47:58Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: .index_build{background: #e8dbb5;transition: all 0.5s; -webkit-transition:all 0.5s; /* Safari */} .index_build:hover{background: khaki;} hr{ background-color:rgba(0, 0, 0, 0.16);} }}</includeonly> e5b1c10009ee4907a1faac1e29d57d6796c467bb 92 90 2020-06-11T16:52:39Z 13253902 7 wikitext text/x-wiki <noinclude> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}}</noinclude><includeonly><div class="index_build" style="text-align:center;width:30%;display:inline-block;margin:3px;padding:8px;;border-radius: 8px;box-shadow:2px 2px 3px 1px #777;"><big>[[{{{1|}}}|{{{2|}}}]]</big> ----- [[文件:{{{1|}}}.png|x60px|class=img-kk|link={{{2|}}}]]</div> {{#css: a{color:#73593F;} a:visited{color:#73593F;} .index_build{background: #e8dbb5;transition: all 0.5s; -webkit-transition:all 0.5s; /* Safari */} .index_build:hover{background: khaki;} hr{ background-color:rgba(0, 0, 0, 0.16);} }}</includeonly> f2dcba000b11326f2f86cb98f5ba053b154db226 首页 0 1 75 34 2020-06-05T15:53:47Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h2">建造</div> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} <div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}} </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于WIKI</div> <div class="bili-divider"></div> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> <div class="sidebar-content"></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于游戏</div> <div class="bili-divider"></div> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> <div class="sidebar-content"></div> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 88e31626a22f70b0a5ca3d917150645ff18df001 91 75 2020-06-11T16:49:56Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}} </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于WIKI</div> <div class="bili-divider"></div> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> <div class="sidebar-content"></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="sidebar-card" style="margin:0 0 20px 0"> <div class="bili-title-h1">关于游戏</div> <div class="bili-divider"></div> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> <div class="sidebar-content"></div> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 1ff88897c2151043df6f7ce629c8b525a8948f0d 93 91 2020-06-11T17:14:22Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}} </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> b7f506e6a9203832ac7f19c6140f96a7ff642b6a 94 93 2020-06-12T02:19:16Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> d01510367a2a1a9ae33caf0947c78bd335192690 沙盒 0 32 87 2020-06-11T05:59:19Z 13253902 7 创建页面 wikitext text/x-wiki <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-h2">建造</div> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> <div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}} </div> {{#CSS: .ts-h2{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;} .ts-box{} }} 541bd7fc57ac4af97d37c3e6e28ac42fb30ddcec MediaWiki:Common.css 8 17 89 24 2020-06-11T16:47:02Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 椭圆图片 */ .rounded-circle{ border-radius:50%; } /* 首页建造 */ .ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;} .ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;} .ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;} 29e823e6485d3d6d37e380bf01c7ad07d1d004e0 MediaWiki:Common.js 8 33 95 2020-06-12T02:30:52Z 13253902 7 创建页面,内容为“/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理用户链接 */ /* 来源:异星工厂WIKI*/ $(".mw-userlink").e…” javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理用户链接 */ /* 来源:异星工厂WIKI*/ $(".mw-userlink").each(function(){ $(this).removeAttr("class"); $(this).attr("href",$(this).attr("href").replace(/^.+:(\d+).*/g, "https://space.bilibili.com/$1")); $(this).attr("title",$(this).attr("title").replace(/(用户:)\d+.*/g, "$1"+$(this).parent()[0].children[0].innerHTML)); $(this).attr("style","color:#0066FF"); $(this).attr("target","_blank"); }); f04d617980215b02dd2c36ae96c76ec614faab88 模板:社区建筑 10 34 96 2020-06-13T04:21:14Z 13253902 7 创建页面 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | |- ! 解锁等级 |- | {{{等级|}}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 4d9830ac857269476a3644a81f25152dad624e42 99 96 2020-06-13T04:33:48Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|220px|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | |- ! 解锁等级 |- | {{{等级|}}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 477592e0b9728e14fa8a7d22cb54e7cd17d2d6fb 100 99 2020-06-13T04:35:07Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:8px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | |- ! 解锁等级 |- | {{{等级|}}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | {{{金币|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | +{{{人口|}}} | +{{{经验|}}} | {{{占地|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 9889eb7ce5d1507a8ac0c39efd1a3b450b8938b5 杂货铺 0 35 97 2020-06-13T04:25:38Z 13253902 7 创建页面 wikitext text/x-wiki {{社区建筑 |中文=杂货铺 |等级=5 |金币=25 |人口=10 |经验=20 |现金=1 |占地=2×1 |玻璃= |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }} 58c2cb5610070c8daf928036019506c488c2daf4 文件:杂货铺.png 6 36 98 2020-06-13T04:32:06Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 模板:社区建筑 10 34 101 100 2020-06-13T05:09:07Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | {{{等级|}}} | {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | {{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3"|{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | +{{{人口|}}} | +{{{经验|}}} | +{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 13bdb8401d94e5a738c622638c80c31bdde0c056 116 101 2020-06-13T16:01:46Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | {{小星级|{{{等级|}}}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 805203e4690e8bb72407868fda1d708a17bd9830 117 116 2020-06-13T16:13:23Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 16px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}111分 | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> fcc226fe632d5ecd2cd75291d853e9dbc6559478 118 117 2020-06-13T16:17:59Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}111分 | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 3e892dc371c69b4b1013891c8d1836fff62d30ac 119 118 2020-06-13T16:19:28Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 921177f7b35b3f815e1cc65855d9a13b4c5570ab 文件:时间.png 6 37 102 2020-06-13T06:03:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 143 102 2020-06-22T07:22:41Z 13253902 7 13253902上传[[文件:时间.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:现金.png 6 38 103 2020-06-13T06:03:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:占地.png 6 39 104 2020-06-13T06:03:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 109 104 2020-06-13T06:20:44Z 13253902 7 13253902上传[[文件:占地.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:获得经验.png 6 40 105 2020-06-13T06:03:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:金币.png 6 41 106 2020-06-13T06:03:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:人口.png 6 42 107 2020-06-13T06:06:53Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 108 107 2020-06-13T06:18:23Z 13253902 7 13253902上传[[文件:人口.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 模板:房屋 10 11 110 67 2020-06-13T06:21:09Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | {{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! 所需金币 ! 建造时间 ! 获得人口 ! 获得经验 ! 占地面积 |- | [[文件:金币.png|x32px|link=]]{{{金币|}}} | [[文件:时间.png|x32px|link=]]{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | [[文件:人口.png|x32px|link=]]+{{{人口|}}} | [[文件:获得经验.png|x32px|link=]]+{{{经验|}}} | [[文件:占地.png|x32px|link=]]{{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 2c8f02d884a61c447d06fb81889ecf5e67d75654 112 110 2020-06-13T07:12:00Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币<br>[[文件:金币.png|x40px|class=img-kk|link=]] ! width=20%|所需时间<br>[[文件:时间.png|x40px|class=img-kk|link=]] ! width=20%|获得人口<br>[[文件:人口.png|x40px|class=img-kk|link=]] ! width=20%|获得经验<br>[[文件:获得经验.png|x40px|class=img-kk|link=]] ! width=20%|占地面积<br>[[文件:占地.png|x40px|class=img-kk|link=]] |- | style="font-size:x-large;"| {{{金币|}}} | style="font-size:x-large;"| {{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| +{{{人口|}}} | style="font-size:x-large;"| +{{{经验|}}} | style="font-size:x-large;"| {{{占地|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 92975162d6a42102f582216052859ed2df64b283 114 112 2020-06-13T15:13:49Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | <includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> b838657e5cda3b95495f4a53942ea05c7a4773c5 房屋/小屋 0 10 111 49 2020-06-13T06:21:34Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=小屋 |等级=4、4、4、5 <!-- 用顿号隔开 --> |金币=5 |人口=5 |经验=5 |时间(天)= |时间(时)= |时间(分)=1 |时间(秒)= |占地=1×1 }} aa5cbf6dfdfaa8dcf8a88f9eadac7d7b6ee011db MediaWiki:Common.css 8 17 113 89 2020-06-13T15:11:00Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 文字不换行 */ .no{white-space:nowrap;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 椭圆图片 */ .rounded-circle{ border-radius:50%; } /* 首页建造 */ .ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;} .ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;} .ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;} b7d9e28a09e395803d2e9eb8de7066f3361566bb 房屋/科德角式小屋 0 12 115 51 2020-06-13T15:17:44Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=科德角式小屋 |等级=1、5、6、7、8 <!-- 用顿号隔开 --> |金币=10 |人口=10 |经验=10 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= |占地=1×1 }} f5d24e37cf53b82e3f2052d9916d21bfa46556bf MediaWiki:Common.js 8 33 120 95 2020-06-16T05:55:15Z 13253902 7 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理用户链接 */ /* 来源:异星工厂WIKI*/ $(".mw-userlink").each(function(){ $(this).removeAttr("class"); $(this).attr("href",$(this).attr("href").replace(/^.+:(\d+).*/g, "https://space.bilibili.com/$1")); $(this).attr("title",$(this).attr("title").replace(/(用户:)\d+.*/g, "$1"+$(this).parent()[0].children[0].innerHTML)); $(this).attr("style","color:#0066FF"); $(this).attr("target","_blank"); }); /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); ad0d054320818dd0fcc7d96b889fe21189d2d777 文件:房屋 牧人小舍.png 6 43 121 2020-06-17T02:51:59Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 梦想小镇:AutoWikiBrowser/CheckPage 4 44 122 2020-06-17T04:53:37Z 13253902 7 创建页面 wikitext text/x-wiki 这一页面用于标明AutowikiBrowser所能使用的账号,要在您的站点使用AutoWikiBrowser,请创建页面“Project:AutoWikiBrowser/CheckPage”,并按如下格式输入需要许可的账号。 更多支持与帮助请查看[[wikipedia:Project:AWB]]。 ==许可的账号== ===机器人=== <!--enabledusersbegins--> <!--enabledbots--> *裂炎 *13253902@裂炎 <!--enabledbotsends--> 8798ab225e4c03463fbf9725650adc0c3f57235f 模板:房屋表 10 24 123 63 2020-06-20T05:38:00Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | {{{3|}}} | {{{4|}}} | +{{{5|}}} | {{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} </includeonly> 0a77e01eee0031ceeb6c7b3585ac1a7b1057a2bb 124 123 2020-06-20T05:42:32Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | style="font-size:xx-large;"| {{{3|}}} | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}} | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} </includeonly> 9168033b02179d1a2483bf1ca520674b17bdf40e 模板:社区建筑表 10 45 125 2020-06-20T05:53:25Z 13253902 7 创建页面 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}} | style="font-size:x-large;"| [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 912def5be1b79a5dae2a689e39c65b721a2c4c28 127 125 2020-06-20T05:57:05Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> d05290c14efc62500585db5bdd552655027154de 131 127 2020-06-20T06:06:14Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> e0dceb50ce81d521c573fa93bc71d321fe9649c9 132 131 2020-06-20T06:07:48Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> d150e064cba78af59f6244880d82063e151d7814 134 132 2020-06-20T06:11:02Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;"> [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;"> [[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} {{#if:{{{7|}}}|<div style="display:inline-block;"> [[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 2ce8729cf8141c518f826721f02a2e25ed9e39b0 135 134 2020-06-20T06:12:55Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} {{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;"> [[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 760f3b69b7614914beb4cd165a6b1bae2297daa1 136 135 2020-06-20T06:13:20Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} {{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 0a288187997e0c08f07600a6ef4eabc18c6919fd 144 136 2020-06-25T07:37:36Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} {{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> c75251ecc93f6c119139f2b468e3b17265539405 社区建筑 0 46 126 2020-06-20T05:53:53Z 13253902 7 创建页面 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 社区建筑 ! 解锁等级 ! 所需金币 ! 所需材料 ! 建造时间 {{#ask:[[分类:社区建筑]] |?中文 |?等级 |?金币 |?玻璃 |?砖块 |?混凝土路面 |?钻头 |?电锯 |?电钻 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=desc |headers=hide |template=社区建筑表 |format=template |limit=1000 }} |} 740df3d4aca271ef5e78fb7adae95cc319b37a63 128 126 2020-06-20T05:57:09Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 社区建筑 ! 解锁等级 ! 所需材料 ! 建造时间 {{#ask:[[分类:社区建筑]] |?中文 |?等级 |?金币 |?玻璃 |?砖块 |?混凝土路面 |?钻头 |?电锯 |?电钻 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=desc |headers=hide |template=社区建筑表 |format=template |limit=1000 }} |} a5f225f448385a6c008b45da600f54c3c0b748f7 137 128 2020-06-20T06:18:43Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 社区建筑 ! 解锁等级 ! 所需材料 ! 建造时间 {{#ask:[[分类:社区建筑]] |?中文 |?等级 |?金币 |?玻璃 |?砖块 |?混凝土路面 |?钻头 |?电锯 |?电钻 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=asc |headers=hide |template=社区建筑表 |format=template |limit=1000 }} |} c5c2b7ed5663762d5641a8dec7e79946eef90295 学校 0 47 129 2020-06-20T06:00:46Z 13253902 7 创建页面 wikitext text/x-wiki {{社区建筑 |中文=学校 |等级=5 |金币=30 |人口=20 |经验=40 |现金=1 |占地=2×1 |玻璃=1 |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= }} c6fe751c4af7e1d0429b84351943a99b69d4510c 文件:玻璃.png 6 48 130 2020-06-20T06:04:37Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:砖块.png 6 49 133 2020-06-20T06:08:42Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:学校.png 6 50 138 2020-06-22T06:07:47Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 医院 0 51 139 2020-06-22T06:16:15Z 13253902 7 创建页面 wikitext text/x-wiki {{社区建筑 |中文=医院 |等级=6 |金币=40 |人口=25 |经验=50 |现金=1 |占地=2×1 |玻璃=1 |砖块=1 |混凝土路面=1 |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= }} 3c1691e2910678e5b9c4a752a93ada6447d1b33b 文件:医院.png 6 52 140 2020-06-22T06:16:35Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:混凝土路面.png 6 53 141 2020-06-22T06:17:46Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 模板:田地 10 54 142 2020-06-22T07:18:33Z 13253902 7 创建页面 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |经验={{{经验|}}} |请求={{{请求|}}} |商人={{{商人|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 所需金币 ! 生长时间 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! 社团请求 ! 商人市场 ! 贩卖价格 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:田地]]</includeonly> 16fc9ff3fd6d3b68f3afcf012461d8a5f144ad6e MediaWiki:Gadget-section-Editing 8 55 145 2020-07-16T06:49:39Z 13253902 7 创建页面 wikitext text/x-wiki 编辑工具 81590250fc22fcaa1dcc37b855d8712a4480ced4 MediaWiki:Gadgets-definition 8 56 146 2020-07-16T06:50:11Z 13253902 7 创建页面,内容为“==Editing==” wikitext text/x-wiki ==Editing== fbda3c4319ad0e6f82f915e7b354f8133f7f5637 147 146 2020-07-16T06:51:38Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js 4bfcdc6a45e11a20546449aad78f321d03129630 MediaWiki:Gadget-BwikiBatchEditor 8 57 148 2020-07-16T06:52:25Z 13253902 7 创建页面,内容为“'''BwikiBatchEditor''':BWIKI批量页面编辑器。” wikitext text/x-wiki '''BwikiBatchEditor''':BWIKI批量页面编辑器。 8c28ff02ed8719bab9d6b3191f12aecc8f9858da MediaWiki:Gadget-BwikiBatchEditor.js 8 58 149 2020-07-16T06:53:01Z 13253902 7 创建页面,内容为“mw.loader.load("/factorio/load.php?modules=ext.gadget.BwikiBatchEditor&only=scripts");” javascript text/javascript mw.loader.load("/factorio/load.php?modules=ext.gadget.BwikiBatchEditor&only=scripts"); f0119fe267e1e1d8a7ad50ecaa6c3a34c04b973a 沙盒 0 32 151 87 2020-07-16T07:38:33Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki 1内容 2febf24f11782a91d0541d18ecc677bb87e11712 沙盒 0 32 152 151 2020-07-16T07:40:08Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 153 152 2020-07-16T07:41:12Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki 123 内容 5cc007383bb999f6b33d4772a4a9b92250ebabad 首页 0 1 154 94 2020-07-28T12:09:08Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  本WIKI现有 [[特殊:最近更改|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFPAGES}}</span>]] 个页面,以及 [[特殊:贡献得分|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFACTIVEUSERS}}</span>]] 位活跃编辑者。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 5d835c12aa080e9ad08e4c39b79903af9eb69def 157 154 2020-07-31T11:41:35Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  本WIKI现有{{NUMBEROFUSERS}}名注册用户,[[特殊:最近更改|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFPAGES}}</span>]] 个页面,以及 [[特殊:贡献得分|<span style="padding:1px 5px;background:#eee;border: 1px solid #262626;border-radius: 4px;font-weight:bold">{{NUMBEROFACTIVEUSERS}}</span>]] 位活跃编辑者。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> a400d13e42f8512836d1bc72c7c1df15f278ec2e 158 157 2020-07-31T12:23:38Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> <div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user">[[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style="">[[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil">[[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 7122d37db849bf79fa88c0560362cb47e281deb6 159 158 2020-07-31T12:35:28Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> ---- <p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p> <div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user">[[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style="">[[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil">[[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 7ffb11075eab40e50cd94f54f819717850154bf1 160 159 2020-07-31T12:40:43Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> ---- <p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p> <div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> f10bfdc877536039fffaf010d27fa1b9b2c138e9 MediaWiki:Common.css 8 17 155 113 2020-07-29T09:09:38Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 文字不换行 */ .no{white-space:nowrap;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 一级导航背景透明*/ .wiki-menu-li-1{ background:#FFF0!important; } .title_active{ background:#000!important; } /* 一级导航栏搜索高度修正*/ .wiki-header .wiki-nav .nav-search-box{ padding:8px 0; } @media (max-width: 768px) { #simpleSearch1 #searchInput { padding:0;} } /* 首页建造 */ .ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;} .ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;} .ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;} 8ab7bb52c7a08e803e0553d46a8125890d87af53 房屋/海螺屋 0 61 161 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12<!-- 用顿号隔开 --> |金币=20 |人口=20 |经验=20 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} ea238d52a493a6c499ae0d1506484b650b4fd1fa 190 161 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12<!-- 用顿号隔开 --> |金币=20 |人口=20 |经验=20 |时间(天)=__时间天__ |时间(时)=__时间时__ |时间(分)=30 |时间(秒)=__时间秒__ |占地=1×1 }} c6afa82d10548bf2911c5d0157c078ab82991c9e 房屋/折顶式小屋 0 62 162 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18<!-- 用顿号隔开 --> |金币=160 |人口=40 |经验=40 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 53bfef17986c80515e72a51b6efb50e7d42c1fc3 195 162 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18<!-- 用顿号隔开 --> |金币=160 |人口=40 |经验=40 |时间(天)=__时间天__ |时间(时)=3 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 19e7441e6025da20c049b7ffa95ce4c8c1db13a5 房屋/农舍 0 66 166 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15<!-- 用顿号隔开 --> |金币=60 |人口=30 |经验=30 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 29e132bd8319a98268e055bc1c7306d7560652a4 192 166 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15<!-- 用顿号隔开 --> |金币=60 |人口=30 |经验=30 |时间(天)=__时间天__ |时间(时)=1 |时间(分)=30 |时间(秒)=__时间秒__ |占地=1×1 }} 7029168dec287e37a075d3b025a8bf37953332e0 房屋/美式四角楼 0 67 167 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24<!-- 用顿号隔开 --> |金币=385 |人口=55 |经验=55 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 2055ad66b7ebf2582fef243d84178d274da523bc 197 167 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24<!-- 用顿号隔开 --> |金币=385 |人口=55 |经验=55 |时间(天)=__时间天__ |时间(时)=7 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 9e2a11c27e29d9ee73c09ca8782b460c641ebeae 房屋/一厅一室房 0 68 168 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26<!-- 用顿号隔开 --> |金币=540 |人口=60 |经验=60 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 79dfd1cc04e4fe819a69393428fe9ebcd84999de 199 168 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26<!-- 用顿号隔开 --> |金币=540 |人口=60 |经验=60 |时间(天)=__时间天__ |时间(时)=7 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} dd6e8ad70f8a7ba70fe06c1906b4d334a9658786 房屋/匠心小栋 0 69 169 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20<!-- 用顿号隔开 --> |金币=225 |人口=45 |经验=45 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 636c8f239cb5faf0f2bbfb0f82444945fd7bc5f5 196 169 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20<!-- 用顿号隔开 --> |金币=225 |人口=45 |经验=45 |时间(天)=__时间天__ |时间(时)=4 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} f72bf92b5559a02841e11e4daa11227bdb07c6a7 房屋/复式公寓 0 71 171 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29<!-- 用顿号隔开 --> |金币=715 |人口=65 |经验=65 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 533e890e4b0ad704678630894f5c73c405ff69b0 200 171 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29<!-- 用顿号隔开 --> |金币=715 |人口=65 |经验=65 |时间(天)=__时间天__ |时间(时)=9 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 4239ff0f41c22974c07817cd25627ac373f6d0b9 房屋/联排别墅 0 72 172 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32<!-- 用顿号隔开 --> |金币=910 |人口=70 |经验=70 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 61d0a105b50cdfab506e77b3a16450edd4e9f379 201 172 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32<!-- 用顿号隔开 --> |金币=910 |人口=70 |经验=70 |时间(天)=__时间天__ |时间(时)=10 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 5504f6455d51c77693b36762ab57ec3c198ea50a 房屋/维多利亚联排别墅 0 73 173 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44<!-- 用顿号隔开 --> |金币=1200 |人口=75 |经验=75 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 281be9d1d2d9dfb34de4086ce54aa2fe90002f5c 204 173 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44<!-- 用顿号隔开 --> |金币=1200 |人口=75 |经验=75 |时间(天)=__时间天__ |时间(时)=12 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} f2cffe4deed8340fa6b196d40ab81a01f630b71a 房屋/花园式公寓 0 74 174 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39<!-- 用顿号隔开 --> |金币=1440 |人口=80 |经验=80 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 23fa0dacb85dbabaad85fca570af9a131b45d4f0 203 174 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39<!-- 用顿号隔开 --> |金币=1440 |人口=80 |经验=80 |时间(天)=__时间天__ |时间(时)=16 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 30e1f5065d22e8ae70ecf0b2bc8c1f40f9c5ef3c 房屋/共管公寓 0 75 175 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 2de4374888ad285a5861796a45f27801057576c2 202 175 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)=__时间天__ |时间(时)=18 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 1d9fcc0a5787b5a2e9f729c5a115e31f1f14d7a8 房屋/合租房 0 76 176 2020-08-02T14:56:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58<!-- 用顿号隔开 --> |金币=3000 |人口=100 |经验=100 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 8d5cd6d6766a3642afbc1ceed96a3d4c454c6f78 206 176 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58<!-- 用顿号隔开 --> |金币=3000 |人口=100 |经验=100 |时间(天)=__时间天__ |时间(时)=22 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 6adaacc05287cbc05322e54f2732f7737702cf0c 房屋/公寓大楼 0 77 177 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46<!-- 用顿号隔开 --> |金币=2250 |人口=90 |经验=90 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 9a55963497a062447bc1b3b4e546db2c56720c23 205 177 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46<!-- 用顿号隔开 --> |金币=2250 |人口=90 |经验=90 |时间(天)=__时间天__ |时间(时)=20 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 050fec61f56062f4a7fcd87d10b2a00afe2551e3 房屋/带花园的高层 0 78 178 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62<!-- 用顿号隔开 --> |金币=3850 |人口=110 |经验=110 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 4c3fa4ec80f85fe01b8569762639c5749ce91e90 207 178 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62<!-- 用顿号隔开 --> |金币=3850 |人口=110 |经验=110 |时间(天)=1 |时间(时)=__时间时__ |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 2308d53d8c7508bbf5b63ccaf9a9097779f3eba8 房屋/带阁楼的高层建筑 0 79 179 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 --> |金币=6300 |人口=140 |经验=140 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 1ad1af867d54129e1aafba2d1c14d59c94658e79 房屋/普通高层 0 80 180 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 --> |金币=4800 |人口=120 |经验=120 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 1c557d397ca6638d491b3865641060b8f20dbd8e 房屋/光明屋 0 81 181 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84<!-- 用顿号隔开 --> |金币=7500 |人口=150 |经验=150 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=2×1 }} bbbac1a03f56cd11bbe1b37eecdad964cddf1f28 房屋/瓷砖高层 0 82 182 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68<!-- 用顿号隔开 --> |金币=9500 |人口=190 |经验=190 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 037b9d8b0db59e60f63394dd1be56c6850080c03 房屋/圆木小屋 0 83 183 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72<!-- 用顿号隔开 --> |金币=11500 |人口=230 |经验=230 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 44baa02592d1e036c95a02d1e1211f67495cb36e 房屋/摩登高层 0 84 184 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74<!-- 用顿号隔开 --> |金币=13500 |人口=270 |经验=270 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 2e14cda398acff5296002f005622d726f65777c0 房屋/老房屋 0 85 185 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78<!-- 用顿号隔开 --> |金币=16500 |人口=330 |经验=330 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 13a0fc63f0850d4d7990553ec70a975b4520be4a 房屋/双尖塔楼 0 86 186 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84<!-- 用顿号隔开 --> |金币=21000 |人口=420 |经验=420 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} ada1a858ecf5909a1402afb2cc9804cd19bf3545 房屋/商住综合楼 0 88 188 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82<!-- 用顿号隔开 --> |金币=27600 |人口=460 |经验=460 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} f5e62903da84870b4f7695d7e638b338978a63e3 房屋/独户住房 0 89 189 2020-08-02T14:56:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=2×2 }} 2baa7e3e15304b39a700e9e9802590992d09c426 房屋/牧人小舍 0 90 191 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10<!-- 用顿号隔开 --> |金币=15 |人口=15 |经验=15 |时间(天)=__时间天__ |时间(时)=__时间时__ |时间(分)=20 |时间(秒)=__时间秒__ |占地=1×1 }} 238b99907e8596cad746ef06ab6f47d4e84d6458 房屋/别墅 0 91 193 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=别墅 |等级=8、9、13、14<!-- 用顿号隔开 --> |金币=25 |人口=25 |经验=25 |时间(天)=__时间天__ |时间(时)=1 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 6eeea67f05dd8f32e715996f03f26893eac99030 房屋/三角顶小屋 0 92 194 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=三角顶小屋 |等级=12、13、16、17<!-- 用顿号隔开 --> |金币=105 |人口=35 |经验=35 |时间(天)=__时间天__ |时间(时)=2 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} a86367dbd11b18075c3e2ec84c948043251b19f3 房屋/双层楼房 0 93 198 2020-08-02T15:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双层楼房 |等级=20、21、21、22<!-- 用顿号隔开 --> |金币=300 |人口=50 |经验=50 |时间(天)=__时间天__ |时间(时)=6 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×1 }} 24e4991af74203af3a2cd8f61f0b2113e3fdc75b 房屋/光明屋 0 81 208 181 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84<!-- 用顿号隔开 --> |金币=7500 |人口=150 |经验=150 |时间(天)=1 |时间(时)=6 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=2×1 }} c198a4b47ee7210f05241f97b93c2ded3f4ad8f4 239 208 2020-08-02T16:50:01Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84<!-- 用顿号隔开 --> |金币=7500 |人口=150 |经验=150 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=2×1 }} bbbac1a03f56cd11bbe1b37eecdad964cddf1f28 房屋/普通高层 0 80 209 180 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 --> |金币=4800 |人口=120 |经验=120 |时间(天)=1 |时间(时)=2 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 0938a4fc927788cb9ddad518162d7333ef4e65a8 237 209 2020-08-02T16:50:00Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 --> |金币=4800 |人口=120 |经验=120 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 1c557d397ca6638d491b3865641060b8f20dbd8e 房屋/带阁楼的高层建筑 0 79 210 179 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 --> |金币=6300 |人口=140 |经验=140 |时间(天)=1 |时间(时)=4 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 09212a174e0ff3bbffb2df255f23a2b9bd0e03cd 238 210 2020-08-02T16:50:00Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 --> |金币=6300 |人口=140 |经验=140 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 1ad1af867d54129e1aafba2d1c14d59c94658e79 房屋/瓷砖高层 0 82 211 182 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68<!-- 用顿号隔开 --> |金币=9500 |人口=190 |经验=190 |时间(天)=1 |时间(时)=8 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 2990fedea7a634609e19031a31619568849d44d3 240 211 2020-08-02T16:50:01Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68<!-- 用顿号隔开 --> |金币=9500 |人口=190 |经验=190 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 037b9d8b0db59e60f63394dd1be56c6850080c03 房屋/圆木小屋 0 83 212 183 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72<!-- 用顿号隔开 --> |金币=11500 |人口=230 |经验=230 |时间(天)=1 |时间(时)=8 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} a373399e4d65c15f1601c560da0aff3ad784e39a 241 212 2020-08-02T16:50:01Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72<!-- 用顿号隔开 --> |金币=11500 |人口=230 |经验=230 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 44baa02592d1e036c95a02d1e1211f67495cb36e 房屋/摩登高层 0 84 213 184 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74<!-- 用顿号隔开 --> |金币=13500 |人口=270 |经验=270 |时间(天)=1 |时间(时)=10 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 8bcee96f1d2cbf1f28b1b2a0812b2e3bceaaa92d 242 213 2020-08-02T16:50:02Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74<!-- 用顿号隔开 --> |金币=13500 |人口=270 |经验=270 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 2e14cda398acff5296002f005622d726f65777c0 房屋/原木屋 0 94 214 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80<!-- 用顿号隔开 --> |金币=19000 |人口=380 |经验=380 |时间(天)=1 |时间(时)=12 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} cebee712041388d2fd2b86f1764f68b432c1c045 244 214 2020-08-02T16:50:03Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80<!-- 用顿号隔开 --> |金币=19000 |人口=380 |经验=380 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} ace85eebb8b1900eb85a6bf1876654bccaa8e404 房屋/双尖塔楼 0 86 215 186 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84<!-- 用顿号隔开 --> |金币=21000 |人口=420 |经验=420 |时间(天)=1 |时间(时)=12 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} a216faa9c9f60924613b706bba3c9306d941590e 245 215 2020-08-02T16:50:03Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84<!-- 用顿号隔开 --> |金币=21000 |人口=420 |经验=420 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} ada1a858ecf5909a1402afb2cc9804cd19bf3545 房屋/老房屋 0 85 216 185 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78<!-- 用顿号隔开 --> |金币=16500 |人口=330 |经验=330 |时间(天)=1 |时间(时)=10 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 044daae339ad44948238cdec930cdcaf59a7f7ac 243 216 2020-08-02T16:50:02Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78<!-- 用顿号隔开 --> |金币=16500 |人口=330 |经验=330 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 13a0fc63f0850d4d7990553ec70a975b4520be4a 房屋/商住综合楼 0 88 217 188 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82<!-- 用顿号隔开 --> |金币=27600 |人口=460 |经验=460 |时间(天)=1 |时间(时)=16 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=1×2 }} 287e53e589ed45f1706c5d8cdf3ef2f1d89b74c8 246 217 2020-08-02T16:50:03Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82<!-- 用顿号隔开 --> |金币=27600 |人口=460 |经验=460 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} f5e62903da84870b4f7695d7e638b338978a63e3 房屋/独户住房 0 89 218 189 2020-08-02T15:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=1 |时间(时)=16 |时间(分)=__时间分__ |时间(秒)=__时间秒__ |占地=2×2 }} 87b076b13d3d16525293dbd70eec66671f410c23 247 218 2020-08-02T16:50:04Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=2×2 }} 2baa7e3e15304b39a700e9e9802590992d09c426 248 247 2020-08-02T16:52:18Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=0 |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=2×2 }} 51705da7d8fcd4e58147dfbdb3563a9f650c2819 房屋/牧人小舍 0 90 219 191 2020-08-02T16:49:53Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10<!-- 用顿号隔开 --> |金币=15 |人口=15 |经验=15 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 3431df5c1c61390cb6b663ed1b635b0d99c85d74 249 219 2020-08-02T17:05:56Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10<!-- 用顿号隔开 --> |金币=15 |人口=15 |经验=15 |时间(天)=null |时间(时)= |时间(分)=20 |时间(秒)= |占地=1×1 }} 0ee9986f8e02dd4f579f002ad1dd936359b54bda 250 249 2020-08-02T17:06:26Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10<!-- 用顿号隔开 --> |金币=15 |人口=15 |经验=15 |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= |占地=1×1 }} 29aee94bc55ac21a87a803f7cf97e6037ae09205 房屋/海螺屋 0 61 220 190 2020-08-02T16:49:53Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12<!-- 用顿号隔开 --> |金币=20 |人口=20 |经验=20 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} ea238d52a493a6c499ae0d1506484b650b4fd1fa 251 220 2020-08-02T17:08:44Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12<!-- 用顿号隔开 --> |金币=20 |人口=20 |经验=20 |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= |占地=1×1 }} 65149da49f1cb10bba03a86606385496e88a7255 房屋/别墅 0 91 221 193 2020-08-02T16:49:54Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=别墅 |等级=8、9、13、14<!-- 用顿号隔开 --> |金币=25 |人口=25 |经验=25 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 394453631ce8f41935384553edea98ba6c7225c5 252 221 2020-08-02T17:08:44Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=别墅 |等级=8、9、13、14<!-- 用顿号隔开 --> |金币=25 |人口=25 |经验=25 |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= |占地=1×1 }} 05eb11375c9f1b40053edb79dd42f642f85fc697 房屋/农舍 0 66 222 192 2020-08-02T16:49:54Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15<!-- 用顿号隔开 --> |金币=60 |人口=30 |经验=30 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 29e132bd8319a98268e055bc1c7306d7560652a4 253 222 2020-08-02T17:08:45Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15<!-- 用顿号隔开 --> |金币=60 |人口=30 |经验=30 |时间(天)= |时间(时)=1 |时间(分)=30 |时间(秒)= |占地=1×1 }} 4091d4edae2174be77c4140851421512f7e69c03 房屋/三角顶小屋 0 92 223 194 2020-08-02T16:49:54Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=三角顶小屋 |等级=12、13、16、17<!-- 用顿号隔开 --> |金币=105 |人口=35 |经验=35 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 4ab3cee9aa8e8a80e2622e54089628d8201ba1cc 254 223 2020-08-02T17:08:45Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=三角顶小屋 |等级=12、13、16、17<!-- 用顿号隔开 --> |金币=105 |人口=35 |经验=35 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= |占地=1×1 }} 0b6aed8292afe2a6ba863727e06ffcce0d3fc590 房屋/折顶式小屋 0 62 224 195 2020-08-02T16:49:55Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18<!-- 用顿号隔开 --> |金币=160 |人口=40 |经验=40 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 53bfef17986c80515e72a51b6efb50e7d42c1fc3 255 224 2020-08-02T17:08:45Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18<!-- 用顿号隔开 --> |金币=160 |人口=40 |经验=40 |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= |占地=1×1 }} af70904016d34703defd9f5a8efdff2bcab5d750 房屋/匠心小栋 0 69 225 196 2020-08-02T16:49:55Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20<!-- 用顿号隔开 --> |金币=225 |人口=45 |经验=45 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 636c8f239cb5faf0f2bbfb0f82444945fd7bc5f5 256 225 2020-08-02T17:08:46Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20<!-- 用顿号隔开 --> |金币=225 |人口=45 |经验=45 |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= |占地=1×1 }} 69a8f24db070a578571b05344940eeee67897545 房屋/双层楼房 0 93 226 198 2020-08-02T16:49:55Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双层楼房 |等级=20、21、21、22<!-- 用顿号隔开 --> |金币=300 |人口=50 |经验=50 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} f038274f2fc88148f0e85c5d44ba5ab886be6847 257 226 2020-08-02T17:08:46Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双层楼房 |等级=20、21、21、22<!-- 用顿号隔开 --> |金币=300 |人口=50 |经验=50 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= |占地=1×1 }} bcb13568dfa00fe5b00e8fd193301a6813217770 房屋/美式四角楼 0 67 227 197 2020-08-02T16:49:56Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24<!-- 用顿号隔开 --> |金币=385 |人口=55 |经验=55 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 2055ad66b7ebf2582fef243d84178d274da523bc 房屋/一厅一室房 0 68 228 199 2020-08-02T16:49:56Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26<!-- 用顿号隔开 --> |金币=540 |人口=60 |经验=60 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 79dfd1cc04e4fe819a69393428fe9ebcd84999de 房屋/复式公寓 0 71 229 200 2020-08-02T16:49:57Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29<!-- 用顿号隔开 --> |金币=715 |人口=65 |经验=65 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 533e890e4b0ad704678630894f5c73c405ff69b0 房屋/联排别墅 0 72 230 201 2020-08-02T16:49:57Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32<!-- 用顿号隔开 --> |金币=910 |人口=70 |经验=70 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×1 }} 61d0a105b50cdfab506e77b3a16450edd4e9f379 房屋/维多利亚联排别墅 0 73 231 204 2020-08-02T16:49:57Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44<!-- 用顿号隔开 --> |金币=1200 |人口=75 |经验=75 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 281be9d1d2d9dfb34de4086ce54aa2fe90002f5c 房屋/花园式公寓 0 74 232 203 2020-08-02T16:49:58Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39<!-- 用顿号隔开 --> |金币=1440 |人口=80 |经验=80 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 23fa0dacb85dbabaad85fca570af9a131b45d4f0 房屋/共管公寓 0 75 233 202 2020-08-02T16:49:58Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 2de4374888ad285a5861796a45f27801057576c2 房屋/公寓大楼 0 77 234 205 2020-08-02T16:49:59Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46<!-- 用顿号隔开 --> |金币=2250 |人口=90 |经验=90 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 9a55963497a062447bc1b3b4e546db2c56720c23 房屋/合租房 0 76 235 206 2020-08-02T16:49:59Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58<!-- 用顿号隔开 --> |金币=3000 |人口=100 |经验=100 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 8d5cd6d6766a3642afbc1ceed96a3d4c454c6f78 房屋/带花园的高层 0 78 236 207 2020-08-02T16:49:59Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62<!-- 用顿号隔开 --> |金币=3850 |人口=110 |经验=110 |时间(天)=__时间(天)__ |时间(时)=__时间(时)__ |时间(分)=__时间(分)__ |时间(秒)=__时间(秒)__ |占地=1×2 }} 4c3fa4ec80f85fe01b8569762639c5749ce91e90 房屋/美式四角楼 0 67 258 227 2020-08-02T17:08:46Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24<!-- 用顿号隔开 --> |金币=385 |人口=55 |经验=55 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= |占地=1×1 }} b05b39fc7c03dc225780178db67d76cbb7a7d0f1 房屋/一厅一室房 0 68 259 228 2020-08-02T17:08:47Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26<!-- 用顿号隔开 --> |金币=540 |人口=60 |经验=60 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= |占地=1×1 }} f959eabfeb7705644897f061d2929a41901c686d 房屋/复式公寓 0 71 260 229 2020-08-02T17:08:47Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29<!-- 用顿号隔开 --> |金币=715 |人口=65 |经验=65 |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= |占地=1×1 }} 9dc6e9539ad73fb71e695676f3664770e8244d5d 房屋/联排别墅 0 72 261 230 2020-08-02T17:08:48Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32<!-- 用顿号隔开 --> |金币=910 |人口=70 |经验=70 |时间(天)= |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×1 }} 5b0c63405f9ea9bf49bc388de7b4367de7e1a2dd 房屋/维多利亚联排别墅 0 73 262 231 2020-08-02T17:08:48Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44<!-- 用顿号隔开 --> |金币=1200 |人口=75 |经验=75 |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 2665741fc4bce27223bbfb55a5778b4876e48f58 房屋/花园式公寓 0 74 263 232 2020-08-02T17:08:48Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39<!-- 用顿号隔开 --> |金币=1440 |人口=80 |经验=80 |时间(天)= |时间(时)=16 |时间(分)= |时间(秒)= |占地=1×2 }} 40609a3d274be806a09c541a80e122d00905ce85 房屋/共管公寓 0 75 264 233 2020-08-02T17:08:49Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)= |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} d1bb5855503fb8d8199fa5a7afeb37ffc534aace 房屋/公寓大楼 0 77 265 234 2020-08-02T17:08:49Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46<!-- 用顿号隔开 --> |金币=2250 |人口=90 |经验=90 |时间(天)= |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 19c94fbe28344be2a43c3fa7242a51b2fa3ae089 房屋/合租房 0 76 266 235 2020-08-02T17:08:49Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58<!-- 用顿号隔开 --> |金币=3000 |人口=100 |经验=100 |时间(天)= |时间(时)=22 |时间(分)= |时间(秒)= |占地=1×2 }} c4cd36f47a00c4131b77923b1939f6b50570f195 房屋/带花园的高层 0 78 267 236 2020-08-02T17:08:50Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62<!-- 用顿号隔开 --> |金币=3850 |人口=110 |经验=110 |时间(天)=1 |时间(时)= |时间(分)= |时间(秒)= |占地=1×2 }} 81f5931dd514b70647abcafaa2291665cb86b945 房屋/普通高层 0 80 268 237 2020-08-02T17:08:50Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 --> |金币=4800 |人口=120 |经验=120 |时间(天)=1 |时间(时)=2 |时间(分)= |时间(秒)= |占地=1×2 }} 0cc211115b21b814e5beed4e9016d682e7c94825 房屋/带阁楼的高层建筑 0 79 269 238 2020-08-02T17:08:51Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 --> |金币=6300 |人口=140 |经验=140 |时间(天)=1 |时间(时)=4 |时间(分)= |时间(秒)= |占地=1×2 }} 99820036334f81c310cbbc8f7dec0306dadefb3f 房屋/光明屋 0 81 270 239 2020-08-02T17:08:51Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84<!-- 用顿号隔开 --> |金币=7500 |人口=150 |经验=150 |时间(天)=1 |时间(时)=6 |时间(分)= |时间(秒)= |占地=2×1 }} e8415353b04f8286f90a75fabb1db84a5ec7f57e 房屋/瓷砖高层 0 82 271 240 2020-08-02T17:08:51Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68<!-- 用顿号隔开 --> |金币=9500 |人口=190 |经验=190 |时间(天)=1 |时间(时)=8 |时间(分)= |时间(秒)= |占地=1×2 }} 92f5a4a8cc200542c8dbbe80162a8255aa0985c6 房屋/圆木小屋 0 83 272 241 2020-08-02T17:08:52Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72<!-- 用顿号隔开 --> |金币=11500 |人口=230 |经验=230 |时间(天)=1 |时间(时)=8 |时间(分)= |时间(秒)= |占地=1×2 }} ecf54634d70a7d4c2c57e923bf831a1c43641614 房屋/摩登高层 0 84 273 242 2020-08-02T17:08:52Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74<!-- 用顿号隔开 --> |金币=13500 |人口=270 |经验=270 |时间(天)=1 |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×2 }} 7be52e5ab632c35b68a9de10bb27a7802a7fd37c 房屋/老房屋 0 85 274 243 2020-08-02T17:08:52Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78<!-- 用顿号隔开 --> |金币=16500 |人口=330 |经验=330 |时间(天)=1 |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×2 }} e9a42edbbef59e0ba26808df5b142353f0ace3e1 房屋/原木屋 0 94 275 244 2020-08-02T17:08:53Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80<!-- 用顿号隔开 --> |金币=19000 |人口=380 |经验=380 |时间(天)=1 |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 6bbaf277885b8425e5366667996afc32ea94b37d 房屋/双尖塔楼 0 86 276 245 2020-08-02T17:08:53Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84<!-- 用顿号隔开 --> |金币=21000 |人口=420 |经验=420 |时间(天)=1 |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 0fa86dbfb55d299189a13e4852537950756565f0 房屋/商住综合楼 0 88 277 246 2020-08-02T17:08:54Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82<!-- 用顿号隔开 --> |金币=27600 |人口=460 |经验=460 |时间(天)=1 |时间(时)=16 |时间(分)= |时间(秒)= |占地=1×2 }} a4f3e258b43e38c5cb69616aeed931959c5a72b7 房屋/独户住房 0 89 278 248 2020-08-02T17:08:54Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=1 |时间(时)=16 |时间(分)= |时间(秒)= |占地=2×2 }} 28b86b144abc9ecc0424bb1e9ecb27e9bfb0b97b MediaWiki:Common.css 8 17 279 155 2020-08-02T17:14:32Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 文字不换行 */ .no{white-space:nowrap;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 一级导航背景透明*/ .wiki-menu-li-1{ background:rgba(0,0,0,0)!important; } .title_active{ background:#000!important; } /* 一级导航栏搜索高度修正*/ .wiki-header .wiki-nav .nav-search-box{ padding:8px 0; } @media (max-width: 768px) { #simpleSearch1 #searchInput { padding:0;} } /* 首页建造 */ .ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;} .ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;} .ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;} b8e9e21ec88fe2fc050a93c811a2359ad8df8e94 属性:金币 102 95 280 2020-08-02T17:28:00Z 13253902 7 创建页面,内容为“[[Has type::Number]]” wikitext text/x-wiki [[Has type::Number]] b1464d55936837c2f34d09bb082369be94a5ad1c 282 280 2020-08-02T17:43:44Z 13253902 7 wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 房屋 0 23 281 65 2020-08-02T17:35:34Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=asc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} 14aa70045a0f3cade156a92acc3395bd2a6fcad5 属性:经验 102 96 283 2020-08-02T17:44:43Z 13253902 7 创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。” wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 属性:等级 102 97 284 2020-08-02T17:45:26Z 13253902 7 创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。” wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 属性:最大数量 102 98 285 2020-08-02T17:45:58Z 13253902 7 创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。” wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 属性:时间(分) 102 99 286 2020-08-02T17:46:16Z 13253902 7 创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。” wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 属性:人口 102 100 287 2020-08-02T17:46:25Z 13253902 7 创建页面,内容为“这是类型为[[具有类型::数值型]]的属性。” wikitext text/x-wiki 这是类型为[[具有类型::数值型]]的属性。 1f072ab2c462755dfd937aaf5cf37ada0ddaac6e 文件:房屋 独户住房.png 6 101 288 2020-08-03T15:43:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 复式公寓.png 6 102 289 2020-08-03T15:43:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓大楼.png 6 103 290 2020-08-03T15:43:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 共管公寓.png 6 104 291 2020-08-03T15:43:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 光明屋.png 6 105 292 2020-08-03T15:43:32Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 海螺屋.png 6 106 293 2020-08-03T15:43:32Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 合租房.png 6 107 294 2020-08-03T15:43:33Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 花园式公寓.png 6 108 295 2020-08-03T15:43:33Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 匠心小栋.png 6 109 296 2020-08-03T15:43:34Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 科德角式小屋.png 6 15 297 21 2020-08-03T15:43:34Z 13253902 7 13253902上传[[文件:科德角式小屋.png]]的新版本 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 老房屋.png 6 110 298 2020-08-03T15:43:34Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 联排别墅.png 6 111 299 2020-08-03T15:43:35Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 美式四角楼.png 6 112 300 2020-08-03T15:43:35Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 摩登高层.png 6 113 301 2020-08-03T15:43:36Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 农舍.png 6 114 302 2020-08-03T15:43:36Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 普通高层.png 6 115 303 2020-08-03T15:43:37Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 三角顶小屋.png 6 116 304 2020-08-03T15:43:37Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 商住综合楼.png 6 117 305 2020-08-03T15:43:38Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双层楼房.png 6 118 306 2020-08-03T15:43:38Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双尖塔楼.png 6 119 307 2020-08-03T15:43:39Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 维多利亚联排别墅.png 6 120 308 2020-08-03T15:43:39Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 小屋.png 6 19 309 27 2020-08-03T15:43:39Z 13253902 7 13253902上传[[文件:小屋.png]]的新版本 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 一厅一室房.png 6 121 310 2020-08-03T15:43:40Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 318 310 2020-08-03T15:45:10Z 13253902 7 13253902移动页面[[文件:一听一室房.png]]至[[文件:一厅一室房.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 原木屋.png 6 122 311 2020-08-03T15:43:40Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 圆木小屋.png 6 123 312 2020-08-03T15:43:41Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 折顶式小屋.png 6 124 313 2020-08-03T15:43:41Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 别墅.png 6 125 314 2020-08-03T15:43:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 瓷砖高层.png 6 126 315 2020-08-03T15:43:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带阁楼的高层建筑.png 6 127 316 2020-08-03T15:43:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带花园的高层.png 6 128 317 2020-08-03T15:43:43Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 摩登高层.png 6 113 319 301 2020-08-03T15:45:52Z 13253902 7 13253902移动页面[[文件:摩登高楼.png]]至[[文件:摩登高层.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 杂货铺 0 35 320 97 2020-08-03T16:07:13Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=杂货铺 |等级=5 |金币=25 |人口=15 |经验=30 |现金=1 |占地=2×2 |玻璃= |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }} 81faef2b8f9d106fc55ee3470c9f8a768dddc003 学校 0 47 321 129 2020-08-03T16:07:13Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=学校 |等级=5 |金币=30 |人口=20 |经验=40 |现金=1 |占地=1×2 |玻璃=1 |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= }} 111cdf98f7c97def4c32a68df3f9bd95189f822a 医院 0 51 322 139 2020-08-03T16:07:14Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=医院 |等级=6 |金币=40 |人口=25 |经验=50 |现金=1 |占地=1×2 |玻璃=1 |砖块=1 |混凝土路面=1 |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= }} 5d7c3b30a0616dca98e13befd16331149c311846 警察局 0 129 323 2020-08-03T16:07:14Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=警察局 |等级=7 |金币=50 |人口=30 |经验=60 |现金=1 |占地=1×2 |玻璃=2 |砖块=1 |混凝土路面=1 |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= }} 20029f66519c9de8ff97763de1a735e66f02ebb9 消防局 0 130 324 2020-08-03T16:07:14Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=消防局 |等级=8 |金币=75 |人口=35 |经验=70 |现金=1 |占地=1×2 |玻璃=2 |砖块=2 |混凝土路面=1 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= }} 9a87054a5462b752a88dd41ccb31c338d9da4d31 邮局 0 131 325 2020-08-03T16:07:15Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=邮局 |等级=9 |金币=100 |人口=40 |经验=80 |现金=1 |占地=1×2 |玻璃=2 |砖块=1 |混凝土路面=3 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=1 |时间(分)=30 |时间(秒)= }} ea38f9a4bda19710dae79b08e3672ced78af9de5 自助洗衣店 0 132 326 2020-08-03T16:07:15Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=自助洗衣店 |等级=10 |金币=125 |人口=45 |经验=90 |现金=1 |占地=1×2 |玻璃=3 |砖块=2 |混凝土路面=2 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }} e830e2cb62df07b50610598cf652f4fbe135d986 电影院 0 133 327 2020-08-03T16:07:16Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=电影院 |等级=11 |金币=150 |人口=50 |经验=100 |现金=1 |占地=1×1 |玻璃=2 |砖块=3 |混凝土路面=3 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=2 |时间(分)=30 |时间(秒)= }} fe0de4b11067df67254209631a794baf28e8217b 咖啡厅 0 134 328 2020-08-03T16:07:16Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=咖啡厅 |等级=12 |金币=175 |人口=55 |经验=110 |现金=2 |占地=2×1 |玻璃=2 |砖块=4 |混凝土路面=3 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= }} 92e22ecd124504f2949b11be91e20a2caebdad0f 美发沙龙 0 135 329 2020-08-03T16:07:16Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=美发沙龙 |等级=13 |金币=200 |人口=60 |经验=120 |现金=2 |占地=2×1 |玻璃=4 |砖块=2 |混凝土路面=4 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=3 |时间(分)=30 |时间(秒)= }} 9f870c64b48b27f6907b207d9e1dd5d36be3360f 披萨店 0 136 330 2020-08-03T16:07:17Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=披萨店 |等级=14 |金币=250 |人口=65 |经验=130 |现金=2 |占地=1×1 |玻璃=4 |砖块=1 |混凝土路面=6 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= }} ca9feac3ddbbe734a6689f7f0f6ed99dbc326686 结婚礼堂 0 137 331 2020-08-03T16:07:17Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=结婚礼堂 |等级=15 |金币=300 |人口=70 |经验=140 |现金=2 |占地=1×2 |玻璃=2 |砖块=5 |混凝土路面=5 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=4 |时间(分)=30 |时间(秒)= }} d38f62fd0d70c975826a65915129f82f1f9f7bae 乐器行 0 138 332 2020-08-03T16:07:17Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=乐器行 |等级=16 |金币=350 |人口=75 |经验=150 |现金=2 |占地=1×2 |玻璃=4 |砖块=2 |混凝土路面=7 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=5 |时间(分)= |时间(秒)= }} faa3ff59d18cf991ca732310ea85aa62492b4ef1 保龄球 0 139 333 2020-08-03T16:07:18Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=保龄球 |等级=17 |金币=400 |人口=80 |经验=160 |现金=2 |占地=1×2 |玻璃=5 |砖块=5 |混凝土路面=4 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=5 |时间(分)=30 |时间(秒)= }} c1fa53e1fcd7222e36f6c1944b45204e45df0d73 玩具店 0 140 334 2020-08-03T16:07:18Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=玩具店 |等级=18 |金币=450 |人口=85 |经验=170 |现金=2 |占地=2×2 |玻璃=7 |砖块=4 |混凝土路面=4 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }} 6a84180bee3fb24f3e33bc0cbcee40dbf26ad306 照相馆 0 141 335 2020-08-03T16:07:19Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=照相馆 |等级=19 |金币=500 |人口=90 |经验=180 |现金=2 |占地=2×2 |玻璃=4 |砖块=5 |混凝土路面=7 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=6 |时间(分)=30 |时间(秒)= }} 05af85cefd57e1856afc78839ca00d209ef988b6 火箭船 0 142 336 2020-08-03T16:07:19Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=火箭船 |等级=20 |金币=650 |人口=95 |经验=190 |现金=2 |占地=1×2 |玻璃=5 |砖块=6 |混凝土路面=6 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= }} 9fb41e8e7862c0d348b1374d4a8818c74accebe4 气象台 0 143 337 2020-08-03T16:07:19Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=气象台 |等级=21 |金币=800 |人口=100 |经验=200 |现金=2 |占地=2×2 |玻璃=6 |砖块=5 |混凝土路面=7 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=7 |时间(分)=30 |时间(秒)= }} 132e106e91ce4f83e2df248e94027effa3b582a2 图书馆 0 144 338 2020-08-03T16:07:20Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=图书馆 |等级=22 |金币=950 |人口=105 |经验=210 |现金=3 |占地=1×1 |玻璃=8 |砖块=5 |混凝土路面=6 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=8 |时间(分)= |时间(秒)= }} 2e117a7e2233937d0a38f7c00932671797b55f45 大学 0 145 339 2020-08-03T16:07:20Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=大学 |等级=23 |金币=1100 |人口=110 |经验=220 |现金=3 |占地=1×2 |玻璃=6 |砖块=5 |混凝土路面=10 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= }} 002bdc81c89b3506bf7e42c25f0a000004b7daca 剧院 0 146 340 2020-08-03T16:07:20Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=剧院 |等级=24 |金币=1350 |人口=115 |经验=230 |现金=3 |占地=1×2 |玻璃=10 |砖块=6 |混凝土路面=7 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=10 |时间(分)= |时间(秒)= }} 51098051e3bc9e8d4dfcf75b413738a05ba38b05 美术馆 0 147 341 2020-08-03T16:07:21Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=美术馆 |等级=25 |金币=1600 |人口=120 |经验=240 |现金=3 |占地=2×1 |玻璃=8 |砖块=7 |混凝土路面=10 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=11 |时间(分)= |时间(秒)= }} 7cf8ea41cb5daf9d4b6b24e7663bf29945863ce3 马戏团 0 148 342 2020-08-03T16:07:21Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=马戏团 |等级=26 |金币=1900 |人口=125 |经验=250 |现金=3 |占地=1×2 |玻璃=12 |砖块=8 |混凝土路面=7 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= }} c4a2f7512a6ad1f20d3a185f0a7755ff22ed4672 停车场 0 149 343 2020-08-03T16:07:21Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=停车场 |等级=27 |金币=2200 |人口=130 |经验=260 |现金=3 |占地=2×2 |玻璃=14 |砖块=6 |混凝土路面=9 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=13 |时间(分)= |时间(秒)= }} 4389759bca44930fe4cbeec1aff33f598d51589b 加油站 0 150 344 2020-08-03T16:07:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=加油站 |等级=28 |金币=2500 |人口=135 |经验=270 |现金=3 |占地=1×2 |玻璃=9 |砖块=12 |混凝土路面=10 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=14 |时间(分)= |时间(秒)= }} 50966d7bf9ce150e4a8ef68f7b79e94783bd8910 出租车公司 0 151 345 2020-08-03T16:07:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=出租车公司 |等级=29 |金币=2900 |人口=140 |经验=280 |现金=3 |占地=2×2 |玻璃=13 |砖块=11 |混凝土路面=9 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=15 |时间(分)= |时间(秒)= }} f9811e86134f268e36f63e16296abb3bfac070c4 汽车餐厅 0 152 346 2020-08-03T16:07:22Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=汽车餐厅 |等级=30 |金币=3300 |人口=145 |经验=290 |现金=3 |占地=2×2 |玻璃=10 |砖块=16 |混凝土路面=9 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=16 |时间(分)= |时间(秒)= }} 2dfefcec126546d7b986fd38bdec70ff87ab0888 写字楼 0 153 347 2020-08-03T16:07:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=写字楼 |等级=31 |金币=3800 |人口=150 |经验=300 |现金=3 |占地=2×2 |玻璃=12 |砖块=12 |混凝土路面=13 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=17 |时间(分)= |时间(秒)= }} 8a65b0065b7ac4e5c8d359da6d2521a946afa5da 宾馆 0 154 348 2020-08-03T16:07:23Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=宾馆 |等级=32 |金币=4300 |人口=155 |经验=310 |现金=4 |占地=1×1 |玻璃=11 |砖块=13 |混凝土路面=15 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=18 |时间(分)= |时间(秒)= }} 99331ee299cdce015a3ed575a8b1e12a5e0fb91e 电视台 0 155 349 2020-08-03T16:07:24Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=电视台 |等级=33 |金币=4800 |人口=160 |经验=320 |现金=4 |占地=1×2 |玻璃=17 |砖块=10 |混凝土路面=14 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=19 |时间(分)= |时间(秒)= }} 568df1a861acddef3e8ade4ec3201c2c274105df 电视塔 0 156 350 2020-08-03T16:07:24Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=电视塔 |等级=34 |金币=5300 |人口=165 |经验=330 |现金=4 |占地=2×2 |玻璃=16 |砖块=13 |混凝土路面=14 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=20 |时间(分)= |时间(秒)= }} 1341e415eeab0332f230c1aa4ab43567b5520f43 摩天轮 0 157 351 2020-08-03T16:07:24Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=摩天轮 |等级=35 |金币=5900 |人口=170 |经验=340 |现金=4 |占地=1×1 |玻璃=11 |砖块=18 |混凝土路面=16 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=21 |时间(分)= |时间(秒)= }} 5a56d483052063b4d6de62b42a4366d42d2990b9 过山车 0 158 352 2020-08-03T16:07:25Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=过山车 |等级=36 |金币=6500 |人口=175 |经验=350 |现金=4 |占地=2×2 |玻璃=13 |砖块=10 |混凝土路面=24 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=22 |时间(分)= |时间(秒)= }} def0719dc72014ceb01c55848f6347d213e10f37 体育场 0 159 353 2020-08-03T16:07:25Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=体育场 |等级=37 |金币=7200 |人口=180 |经验=360 |现金=4 |占地=2×3 |玻璃=18 |砖块=11 |混凝土路面=20 |钻头= |电锯= |电钻= |时间(天)= |时间(时)=23 |时间(分)= |时间(秒)= }} 25ff89fec4596175324049c8c0c86871bd03ed00 宠物店 0 160 354 2020-08-03T16:07:26Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=宠物店 |等级=38 |金币=7900 |人口=185 |经验=370 |现金=4 |占地=3×2 |玻璃=19 |砖块=14 |混凝土路面=18 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)= |时间(分)= |时间(秒)= }} 2683a4eb198ae4de027ca9c8216146f9aaa9f56e 气象站 0 161 355 2020-08-03T16:07:26Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=气象站 |等级=39 |金币=8600 |人口=190 |经验=380 |现金=4 |占地=1×2 |玻璃=15 |砖块=16 |混凝土路面=22 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=1 |时间(分)= |时间(秒)= }} 88f3c9102c5973233ce80f2eac95c5f400d2559d 高空跳伞学校 0 162 356 2020-08-03T16:07:27Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=高空跳伞学校 |等级=40 |金币=9300 |人口=195 |经验=390 |现金=4 |占地=1×2 |玻璃=18 |砖块=19 |混凝土路面=18 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=2 |时间(分)= |时间(秒)= }} 5e421582fc7b7e4460d6c73f67af2ff5b352e2af 漫画书店 0 163 357 2020-08-03T16:07:27Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=漫画书店 |等级=41 |金币=10000 |人口=200 |经验=400 |现金=4 |占地=2×2 |玻璃=22 |砖块=20 |混凝土路面=15 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=3 |时间(分)= |时间(秒)= }} 0545eb94322154715c6d9a00fbc84044435b0d8b 海岸巡逻队 0 164 358 2020-08-03T16:07:28Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=海岸巡逻队 |等级=42 |金币=10700 |人口=205 |经验=410 |现金=4 |占地=1×2 |玻璃=22 |砖块=17 |混凝土路面=20 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=4 |时间(分)= |时间(秒)= }} a62d59236c55ae6c65809f2644b0650bcfc41fc0 超市 0 165 359 2020-08-03T16:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=超市 |等级=43 |金币=11500 |人口=210 |经验=420 |现金=4 |占地=2×2 |玻璃=19 |砖块=23 |混凝土路面=19 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=5 |时间(分)= |时间(秒)= }} 0d178e85840a1197b81432d31401d09478aa92f1 温室 0 166 360 2020-08-03T16:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=温室 |等级=44 |金币=12500 |人口=215 |经验=430 |现金=4 |占地=2×2 |玻璃=25 |砖块=23 |混凝土路面=15 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=6 |时间(分)= |时间(秒)= }} 264a405c5a1cf4f18ecce29dad6738de0171dfa3 水上乐园 0 167 361 2020-08-03T16:07:29Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=水上乐园 |等级=45 |金币=13500 |人口=220 |经验=440 |现金=4 |占地=3×3 |玻璃=23 |砖块=24 |混凝土路面=18 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=7 |时间(分)= |时间(秒)= }} 3bf06f3e327d5b9c558794ea59838c89f6598604 汽车展 0 168 362 2020-08-03T16:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=汽车展 |等级=46 |金币=14500 |人口=230 |经验=460 |现金=4 |占地=2×2 |玻璃=22 |砖块=18 |混凝土路面=27 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=8 |时间(分)= |时间(秒)= }} eb5e902edfe6a3e98dd9dfc981e39a69ea2dd340 水力发电站 0 169 363 2020-08-03T16:07:30Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=水力发电站 |等级=47 |金币=15500 |人口=240 |经验=480 |现金=4 |占地=1×2 |玻璃=24 |砖块=21 |混凝土路面=24 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=9 |时间(分)= |时间(秒)= }} 2289299e8e1f27ca97cea29819292243d9dc802d 时装小屋 0 170 364 2020-08-03T16:07:31Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=时装小屋 |等级=48 |金币=16500 |人口=250 |经验=500 |现金=4 |占地=3×2 |玻璃=20 |砖块=25 |混凝土路面=26 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=10 |时间(分)= |时间(秒)= }} 2206d09736a7e220039ffa0e53371ffdbbfb568b 电影制片厂 0 171 365 2020-08-03T16:07:31Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=电影制片厂 |等级=49 |金币=17500 |人口=260 |经验=520 |现金=4 |占地=2×1 |玻璃=28 |砖块=20 |混凝土路面=25 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=11 |时间(分)= |时间(秒)= }} 48c1dd3fa5a4219d0ff9a8e1bf30582fc8c39ce8 市法院 0 172 366 2020-08-03T16:07:32Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=市法院 |等级=50 |金币=18500 |人口=270 |经验=540 |现金=4 |占地=2×2 |玻璃=28 |砖块=29 |混凝土路面=18 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=12 |时间(分)= |时间(秒)= }} 20b1e863c5559ccd3f28d69baa49dd8e70484e32 卡丁车比赛 0 173 367 2020-08-03T16:07:32Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=卡丁车比赛 |等级=51 |金币=19500 |人口=290 |经验=580 |现金=5 |占地=2×2 |玻璃=27 |砖块=27 |混凝土路面=23 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=13 |时间(分)= |时间(秒)= }} 5c5d97cf4caeb79ff70378d489e628a0c4873061 健身中心 0 174 368 2020-08-03T16:07:32Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=健身中心 |等级=52 |金币=20500 |人口=310 |经验=620 |现金=5 |占地=2×2 |玻璃=38 |砖块=23 |混凝土路面=18 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=14 |时间(分)= |时间(秒)= }} a1c3891911982851cb45a6a96912157e98c0ae2b 温泉疗养中心 0 175 369 2020-08-03T16:07:33Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=温泉疗养中心 |等级=53 |金币=21500 |人口=330 |经验=660 |现金=5 |占地=2×1 |玻璃=23 |砖块=25 |混凝土路面=33 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=15 |时间(分)= |时间(秒)= }} 62cb820610c05bce8c409cef96c60887e193cbeb 高尔夫球场 0 176 370 2020-08-03T16:07:33Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=高尔夫球场 |等级=54 |金币=22500 |人口=350 |经验=700 |现金=5 |占地=2×2 |玻璃=24 |砖块=27 |混凝土路面=32 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=16 |时间(分)= |时间(秒)= }} 4caea43e4327370ca99e526ef5ad59cbfaaf4538 管风琴厅 0 177 371 2020-08-03T16:07:33Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=管风琴厅 |等级=55 |金币=23500 |人口=370 |经验=740 |现金=5 |占地=2×2 |玻璃=36 |砖块=24 |混凝土路面=25 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=17 |时间(分)= |时间(秒)= }} 6738bbc414d26788f59ad7a8bde31f0a392601a3 甜甜圈店 0 178 372 2020-08-03T16:07:34Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=甜甜圈店 |等级=56 |金币=25000 |人口=390 |经验=780 |现金=5 |占地=1×2 |玻璃=34 |砖块=25 |混凝土路面=28 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=18 |时间(分)= |时间(秒)= }} 152846d5311eea52ed2eb35a3717c68bc17d108a 赛道 0 179 373 2020-08-03T16:07:34Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=赛道 |等级=57 |金币=26500 |人口=410 |经验=820 |现金=5 |占地=1×2 |玻璃=34 |砖块=24 |混凝土路面=31 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=19 |时间(分)= |时间(秒)= }} e12f424209f5c2d489656edb30f4adc9a155fb50 攀岩墙 0 180 374 2020-08-03T16:07:34Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=攀岩墙 |等级=58 |金币=28000 |人口=430 |经验=860 |现金=5 |占地=3×3 |玻璃=32 |砖块=31 |混凝土路面=28 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= }} f42b8dbca6bc0a70ae7d67c61acbd82e2774f21e 汽车维修店 0 181 375 2020-08-03T16:07:35Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=汽车维修店 |等级=59 |金币=29500 |人口=450 |经验=900 |现金=5 |占地=2×1 |玻璃=24 |砖块=34 |混凝土路面=35 |钻头= |电锯= |电钻= |时间(天)=1 |时间(时)=21 |时间(分)= |时间(秒)= }} eb8bb26f3c69b7ee0d91a42d6b51e85ba005358c 天文馆 0 182 376 2020-08-03T16:07:35Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=天文馆 |等级=60 |金币=31000 |人口=470 |经验=940 |现金=5 |占地=1×2 |玻璃= |砖块=30 |混凝土路面= |钻头=8 |电锯=5 |电钻= |时间(天)=1 |时间(时)=22 |时间(分)= |时间(秒)= }} 9abdc1a631978237baaa1a4520b056cc8f42afae 花店 0 183 377 2020-08-03T16:07:36Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=花店 |等级=62 |金币=50500 |人口=490 |经验=980 |现金=5 |占地=2×2 |玻璃=35 |砖块= |混凝土路面= |钻头=12 |电锯= |电钻=8 |时间(天)=1 |时间(时)=23 |时间(分)= |时间(秒)= }} 351635fd31f9a9f69ab736aaa898c73ac97c44c6 赛马场 0 184 378 2020-08-03T16:07:36Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=赛马场 |等级=64 |金币=63000 |人口=530 |经验=1060 |现金=5 |占地=1×2 |玻璃= |砖块=41 |混凝土路面= |钻头= |电锯=14 |电钻=10 |时间(天)=2 |时间(时)= |时间(分)= |时间(秒)= }} 8a76fce9c2c8b02024eb9686d22431db9b59dbb4 音乐表演场 0 185 379 2020-08-03T16:07:36Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=音乐表演场 |等级=66 |金币=75500 |人口=570 |经验=1140 |现金=5 |占地=2×2 |玻璃= |砖块= |混凝土路面=46 |钻头=15 |电锯= |电钻=13 |时间(天)=2 |时间(时)=1 |时间(分)= |时间(秒)= }} 4d4cc76e0389e80e651bb50a2310e9e403f2a5cf 洗车场 0 186 380 2020-08-03T16:07:37Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=洗车场 |等级=68 |金币=87000 |人口=610 |经验=1220 |现金=5 |占地=2×1 |玻璃= |砖块=51 |混凝土路面= |钻头= |电锯=17 |电钻=15 |时间(天)=2 |时间(时)=2 |时间(分)= |时间(秒)= }} 1f355dc24151cf2196ef9f6060d45ef14b96fcd6 海豚馆 0 187 381 2020-08-03T16:07:37Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=海豚馆 |等级=70 |金币=99500 |人口=650 |经验=1300 |现金=5 |占地=1×2 |玻璃=57 |砖块= |混凝土路面= |钻头=19 |电锯= |电钻=17 |时间(天)=2 |时间(时)=3 |时间(分)= |时间(秒)= }} cbbe8b0acc143946953435bb251f26c90e804e21 灯塔 0 188 382 2020-08-03T16:07:38Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=灯塔 |等级=72 |金币=111000 |人口=690 |经验=1380 |现金=6 |占地=2×2 |玻璃= |砖块= |混凝土路面=67 |钻头= |电锯=20 |电钻=19 |时间(天)=2 |时间(时)=4 |时间(分)= |时间(秒)= }} 52599767137a1779f024ed341ec2f5dc8af2a364 摩天大楼 0 189 383 2020-08-03T16:07:38Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=摩天大楼 |等级=74 |金币=125000 |人口=730 |经验=1460 |现金=6 |占地=1×1 |玻璃= |砖块=73 |混凝土路面= |钻头=23 |电锯= |电钻=21 |时间(天)=2 |时间(时)=5 |时间(分)= |时间(秒)= }} f6da2443dfec72d649f5c1c5937a74f84e6bceca 自行车出租行 0 190 384 2020-08-03T16:07:38Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=自行车出租行 |等级=76 |金币=133000 |人口=790 |经验=1580 |现金=6 |占地=1×1 |玻璃=78 |砖块= |混凝土路面= |钻头=25 |电锯=22 |电钻= |时间(天)=2 |时间(时)=6 |时间(分)= |时间(秒)= }} 93ca72b3ad20c55431d06ea6406e56d12b2a28d4 幼儿园 0 191 385 2020-08-03T16:07:39Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=幼儿园 |等级=78 |金币=148000 |人口=850 |经验=1700 |现金=6 |占地=1×2 |玻璃= |砖块= |混凝土路面=83 |钻头= |电锯=24 |电钻=27 |时间(天)=2 |时间(时)=7 |时间(分)= |时间(秒)= }} 2ae76376eccbd449f253296d4b74783d81f63c41 犬类中心 0 192 386 2020-08-03T16:07:39Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=犬类中心 |等级=80 |金币=167000 |人口=900 |经验=1800 |现金=6 |占地=2×2 |玻璃= |砖块=90 |混凝土路面= |钻头=30 |电锯= |电钻=25 |时间(天)=2 |时间(时)=8 |时间(分)= |时间(秒)= }} f8dcf845f3fcb7c82130453fa51620c1ae139bff 银行 0 193 387 2020-08-03T16:07:39Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=银行 |等级=82 |金币=180000 |人口=980 |经验=1960 |现金=6 |占地=1×2 |玻璃=95 |砖块= |混凝土路面= |钻头=32 |电锯=27 |电钻= |时间(天)=2 |时间(时)=9 |时间(分)= |时间(秒)= }} 1a8c344b2e1e8d16cc9a72440f99a006ec79e741 动物医院 0 194 388 2020-08-03T16:07:40Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{社区建筑 |中文=动物医院 |等级=84 |金币=195000 |人口= |经验= |现金= |占地=2×2 |玻璃= |砖块= |混凝土路面=101 |钻头= |电锯=32 |电钻=31 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 7662106f7919d3f5f11ef79df6b16d5ec4fecfe7 模板:社区建筑表 10 45 389 144 2020-08-03T16:15:44Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 70ea30829ccf83a434136b7261c2299b0abade8c 390 389 2020-08-03T16:17:42Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div> {{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}} {{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}} {{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}} {{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}} {{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}} {{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 93a57d49d60b1f2a4cfba9f5b753c5ac227b27e5 391 390 2020-08-03T16:18:12Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 12b13af147e2dfa3e7cbc214811958613a2d59d3 395 391 2020-08-06T05:09:42Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|class=img-kk|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 91833d0eb3af06ad011f566863dc26cd832e6e3b 396 395 2020-08-06T05:20:21Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> ad7504c9422a800ee8752c93d64fcc81a4d6ec93 397 396 2020-08-06T05:39:53Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | <div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> d82e662621206198acb9b2f89e6929b527a20e89 398 397 2020-08-06T05:41:39Z 13253902 7 wikitext text/x-wiki <includeonly>|- | class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;padding-left:10px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 78ea196ebb70023e7559903f9ce524ffb9148158 399 398 2020-08-06T05:48:59Z 13253902 7 wikitext text/x-wiki <includeonly>|- | class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-height:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-height:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-height:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-height:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-height:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-height:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 38ce9d055fea74733351a2483d95d51b79773ae0 400 399 2020-08-06T05:49:43Z 13253902 7 wikitext text/x-wiki <includeonly>|- | class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> 344813a382b8d26a35d8836bad73d9f15d5483fd 401 400 2020-08-06T05:50:13Z 13253902 7 wikitext text/x-wiki <includeonly>|- | class="text-nowrap"|[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;min-width:60px;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> c5833df13e02b5b66dc730c9b02e276622a0cb64 文件:电锯.png 6 195 392 2020-08-03T16:23:12Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电钻.png 6 196 393 2020-08-03T16:23:12Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:钻头.png 6 197 394 2020-08-03T16:23:13Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 造船厂 0 198 402 2020-08-06T05:56:28Z 13253902 7 创建页面,内容为“{{社区建筑 |中文=造船厂 |等级=86 |金币=212000 |人口= |经验= |现金= |占地= |玻璃= |砖块=107 |混凝土路面= |钻头=33 |电锯= |电钻=34…” wikitext text/x-wiki {{社区建筑 |中文=造船厂 |等级=86 |金币=212000 |人口= |经验= |现金= |占地= |玻璃= |砖块=107 |混凝土路面= |钻头=33 |电锯= |电钻=34 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 521f041e067816c05ad450b2dd524a2887c60ec7 403 402 2020-08-06T05:57:13Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=造船厂 |等级=86 |金币=212000 |人口= |经验= |现金= |占地= |玻璃= |砖块=107 |混凝土路面= |钻头=34 |电锯= |电钻=33 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 1f3f7df470566828f8ab2016fc412993ca5ada89 电脑商店 0 199 404 2020-08-06T06:16:30Z 13253902 7 创建页面 wikitext text/x-wiki {{社区建筑 |中文=电脑商店 |等级=88 |金币=231000 |人口= |经验= |现金= |占地= |玻璃=113 |砖块= |混凝土路面= |钻头= |电锯=36 |电钻=34 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 2b3634a5aed45b7422c0357f3cc8b5939a5411fd 405 404 2020-08-06T06:17:32Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=电脑商店 |等级=88 |金币=231000 |人口= |经验= |现金= |占地= |玻璃=113 |砖块= |混凝土路面= |钻头=35 |电锯=36 |电钻= |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 2276704805917851c244cb8d58233954e3c1d5fb 台球厅 0 200 406 2020-08-06T06:18:59Z 13253902 7 创建页面,内容为“{{社区建筑 |中文=台球厅 |等级=90 |金币=252000 |人口= |经验= |现金= |占地= |玻璃= |砖块= |混凝土路面=119 |钻头= |电锯=36 |电钻=39…” wikitext text/x-wiki {{社区建筑 |中文=台球厅 |等级=90 |金币=252000 |人口= |经验= |现金= |占地= |玻璃= |砖块= |混凝土路面=119 |钻头= |电锯=36 |电钻=39 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 12eb92604b24cfc0de62a03eafb0fe7aba4ba9e1 电子竞技馆 0 201 407 2020-08-06T06:19:54Z 13253902 7 创建页面,内容为“{{社区建筑 |中文=电子竞技馆 |等级=92 |金币=275000 |人口= |经验= |现金= |占地= |玻璃= |砖块=125 |混凝土路面= |钻头=41 |电锯= |电…” wikitext text/x-wiki {{社区建筑 |中文=电子竞技馆 |等级=92 |金币=275000 |人口= |经验= |现金= |占地= |玻璃= |砖块=125 |混凝土路面= |钻头=41 |电锯= |电钻=37 |时间(天)= |时间(时)= |时间(分)= |时间(秒)= }} 0b003fe8ce4bf75fb43ac2d567bd3011072be27c 文件:动物医院.png 6 202 408 2020-08-07T16:45:16Z 13253902 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 418 408 2020-08-08T16:22:18Z 13253902 7 13253902上传[[文件:动物医院.png]]的新版本 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 动物医院 0 194 409 388 2020-08-08T05:24:15Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=动物医院 |等级=84 |金币=195000 |人口=1090 |经验=2180 |现金=6 |占地=2×1 |玻璃= |砖块= |混凝土路面=101 |钻头= |电锯=32 |电钻=31 |时间(天)=2 |时间(时)=10 |时间(分)= |时间(秒)= }} b26735042ec96ba69bd531d2f9d2338722afc3da 银行 0 193 410 387 2020-08-08T05:25:51Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=银行 |等级=82 |金币=180000 |人口=980 |经验=1960 |现金=6 |占地=2×2 |玻璃=95 |砖块= |混凝土路面= |钻头=32 |电锯=27 |电钻= |时间(天)=2 |时间(时)=9 |时间(分)= |时间(秒)= }} 11e61f85804040ce7870b6cfe8fb927709d6cc47 造船厂 0 198 411 403 2020-08-08T05:26:57Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=造船厂 |等级=86 |金币=212000 |人口=1190 |经验=2320 |现金=6 |占地=2×2 |玻璃= |砖块=107 |混凝土路面= |钻头=34 |电锯= |电钻=33 |时间(天)=2 |时间(时)=11 |时间(分)= |时间(秒)= }} 747d0178cb675b921dd6ad6e7624b9cd02a11947 电脑商店 0 199 412 405 2020-08-08T05:28:22Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=电脑商店 |等级=88 |金币=231000 |人口=1290 |经验=2580 |现金=6 |占地=2×2 |玻璃=113 |砖块= |混凝土路面= |钻头=35 |电锯=36 |电钻= |时间(天)=2 |时间(时)=12 |时间(分)= |时间(秒)= }} 798d35b5b143014ef4a7fff4e08abca2c6fbfaa7 台球厅 0 200 413 406 2020-08-08T05:28:55Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=台球厅 |等级=90 |金币=252000 |人口=1360 |经验=2720 |现金=6 |占地=2×2 |玻璃= |砖块= |混凝土路面=119 |钻头= |电锯=36 |电钻=39 |时间(天)=2 |时间(时)=13 |时间(分)= |时间(秒)= }} b86921a5b1b365c69af28a55091068417e35bceb 电子竞技馆 0 201 414 407 2020-08-08T05:29:24Z 13253902 7 wikitext text/x-wiki {{社区建筑 |中文=电子竞技馆 |等级=92 |金币=275000 |人口=1580 |经验=3160 |现金=6 |占地=2×2 |玻璃= |砖块=125 |混凝土路面= |钻头=41 |电锯= |电钻=37 |时间(天)=2 |时间(时)=14 |时间(分)= |时间(秒)= }} c9c88f854aac31e87815922f96b1f4b200c703de 文件:台球厅.png 6 203 415 2020-08-08T15:33:24Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:水上乐园.png 6 204 416 2020-08-08T15:36:37Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:保龄球.png 6 205 417 2020-08-08T16:22:17Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:过山车.png 6 206 419 2020-08-08T16:22:18Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:剧院.png 6 207 420 2020-08-08T16:22:19Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:汽车维修店.png 6 208 421 2020-08-08T16:22:19Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:汽车展.png 6 209 422 2020-08-08T16:22:20Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:天文馆.png 6 210 423 2020-08-08T16:22:21Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:温室.png 6 211 424 2020-08-08T16:22:22Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:幼儿园.png 6 212 425 2020-08-08T16:22:22Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:造船厂.png 6 213 426 2020-08-08T16:22:23Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电脑商店.png 6 214 427 2020-08-08T16:41:51Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:邮局.png 6 215 428 2020-08-08T16:43:45Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 模板:社区建筑表 10 45 429 401 2020-08-08T16:45:15Z 13253902 7 wikitext text/x-wiki <includeonly>|- | class="text-nowrap"|[[文件:{{{2|}}}.png|100px|x100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | class="text-nowrap"|<div style="display: inline-flex;justify-content: center;align-items: center;"><div style="min-width:48px;">[[文件:星级.png|x68px|class=img-kk|link=]]</div><span style="position: absolute;font-size: x-large;text-shadow: 1px 1px 1px #000;color:white;transform: translate(-1px, 0px);">{{{3|}}}</span></div> | class="text-nowrap" style="font-size:x-large;"| <div style="display:inline-block;min-width:60px;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}}</div>{{#if:{{{5|}}}|<div style="display:inline-block;min-width:60px;">[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{5|}}}</div>|}}{{#if:{{{6|}}}|<div style="display:inline-block;min-width:60px;">[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{6|}}}</div>|}}{{#if:{{{7|}}}|<div style="display:inline-block;min-width:60px;">[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{7|}}}</div>|}}{{#if:{{{8|}}}|<div style="display:inline-block;min-width:60px;">[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{8|}}}</div>|}}{{#if:{{{9|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{9|}}}</div>|}}{{#if:{{{10|}}}|<div style="display:inline-block;min-width:60px;">[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{10|}}}</div>|}} | class="text-nowrap" style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{11|}}}|{{{11|}}}天}}{{#if:{{{12|}}}|{{{12}}}时}}{{#if:{{{13|}}}|{{{13|}}}分}}{{#if:{{{14|}}}|{{{14|}}}秒}} </includeonly> de2aeaef9c53b5efda5f98a65ef9ea11df4646dc Widget:BilibiliVideo 274 216 430 2020-08-10T07:21:16Z 13253902 7 创建页面 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> d1f01673b6b9ed314627c34eaed188b4eca12cec 模板:B站视频 10 217 431 2020-08-10T07:26:08Z 13253902 7 创建页面,内容为“<includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|0}}}|height={{{5|0}}}}}</includeonly> <noinclude> ==使用方法== ====调…” wikitext text/x-wiki <includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|0}}}|height={{{5|0}}}}}</includeonly> <noinclude> ==使用方法== ====调用参数==== <pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre> ====必填==== *av号:全数字{{#info:av号或bv号只填一个|info}} *bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}} ====选填==== *分P号:默认不填即为1 *宽 高:默认不填为638*359 ====示例==== 你所写的 <pre>{{B站视频|22594153}} {{B站视频|BV1CW411G7eF}}</pre> 显示内容 {{B站视频|22594153}} <br> {{B站视频|BV1CW411G7eF}} </noinclude> 168a6687170194a43e289ee4b2130d45570704fe 沙盒 0 32 432 153 2020-08-18T04:42:40Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki |名称=测试 6ff28df4911b769705d3df14199b360f81d7567f 433 432 2020-08-18T04:43:19Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki |名称= 19550265cd7588b3299ac541174f5d4986327baf 模块:String 828 218 434 2020-08-19T03:55:45Z 13253902 7 创建页面,内容为“--[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed paramet…” Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ); local s = new_args['s'] or ''; return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ); local s = new_args['s'] or ''; local i = tonumber( new_args['i'] ) or 1; local j = tonumber( new_args['j'] ) or -1; local len = mw.ustring.len( s ); -- Convert negatives for range checking if i < 0 then i = len + i + 1; end if j < 0 then j = len + j + 1; end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ); end if j < i then return str._error( 'String subset indices out of order' ); end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch}} OR {{#invoke:String|pos|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * https://www.lua.org/manual/5.1/manual.html#5.4.1 * https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain, nomatch ) if s == '' then return str._error( 'Target string is empty' ); end if pattern == '' then return str._error( 'Pattern string is empty' ); end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ); end if match_index == 0 then return str._error( 'Match index is out of range' ); end if plain_flag then pattern = str._escapePattern( pattern ); end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ); end local iterator = mw.ustring.gmatch(s, pattern); if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1; if match_index == 0 then result = w; break; end end else -- Reverse search local result_table = {}; local count = 1; for w in iterator do result_table[count] = w; count = count + 1; end result = result_table[ count + match_index ]; end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ); else return nomatch; end else return result; end end -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ); local s = new_args['s'] or ''; local start = tonumber( new_args['start'] ) or 1; local plain_flag = str._getBoolean( new_args['plain'] or false ); local pattern = new_args['pattern'] or ''; local match_index = math.floor( tonumber(new_args['match']) or 1 ); local nomatch = new_args['nomatch']; return str._match( s, pattern, start, match_index, plain, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ); local target_str = new_args['target'] or ''; local pos = tonumber( new_args['pos'] ) or 0; if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ); end return mw.ustring.sub( target_str, pos, pos ); end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ); local source_str = new_args['source'] or ''; local target_str = new_args['target'] or ''; if target_str == '' then return 1; end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['target'] or ''; local start_pos = tonumber(new_args['start']) or 1; local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return 0; end plain = str._getBoolean( plain ); local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['pattern'] or ''; local replace = new_args['replace'] or ''; local count = tonumber( new_args['count'] ); local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return source_str; end plain = str._getBoolean( plain ); if plain then pattern = str._escapePattern( pattern ); replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences. end local result; if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ); else result = mw.ustring.gsub( source_str, pattern, replace ); end return result; end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ); end local result = str._escapePattern( pattern_str ) return result end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {}; local index = 1; local value; for i,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame(); local error_category = frame.args.error_category or 'Errors reported by Module String'; local ignore_errors = frame.args.ignore_errors or false; local no_category = frame.args.no_category or false; if str._getBoolean(ignore_errors) then return ''; end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'; if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str; end return error_str; end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error( 'No boolean value found' ); end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); end return str 32c2c0696ac2e148d7e7390f3cd788a6f8e48361 437 434 2020-08-19T04:02:46Z 13253902 7 Scribunto text/plain --[[ 转载自:https://m.mediawiki.org/wiki/Module:String This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ); local s = new_args['s'] or ''; return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ); local s = new_args['s'] or ''; local i = tonumber( new_args['i'] ) or 1; local j = tonumber( new_args['j'] ) or -1; local len = mw.ustring.len( s ); -- Convert negatives for range checking if i < 0 then i = len + i + 1; end if j < 0 then j = len + j + 1; end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ); end if j < i then return str._error( 'String subset indices out of order' ); end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch}} OR {{#invoke:String|pos|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * https://www.lua.org/manual/5.1/manual.html#5.4.1 * https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain, nomatch ) if s == '' then return str._error( 'Target string is empty' ); end if pattern == '' then return str._error( 'Pattern string is empty' ); end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ); end if match_index == 0 then return str._error( 'Match index is out of range' ); end if plain_flag then pattern = str._escapePattern( pattern ); end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ); end local iterator = mw.ustring.gmatch(s, pattern); if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1; if match_index == 0 then result = w; break; end end else -- Reverse search local result_table = {}; local count = 1; for w in iterator do result_table[count] = w; count = count + 1; end result = result_table[ count + match_index ]; end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ); else return nomatch; end else return result; end end -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ); local s = new_args['s'] or ''; local start = tonumber( new_args['start'] ) or 1; local plain_flag = str._getBoolean( new_args['plain'] or false ); local pattern = new_args['pattern'] or ''; local match_index = math.floor( tonumber(new_args['match']) or 1 ); local nomatch = new_args['nomatch']; return str._match( s, pattern, start, match_index, plain, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ); local target_str = new_args['target'] or ''; local pos = tonumber( new_args['pos'] ) or 0; if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ); end return mw.ustring.sub( target_str, pos, pos ); end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ); local source_str = new_args['source'] or ''; local target_str = new_args['target'] or ''; if target_str == '' then return 1; end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['target'] or ''; local start_pos = tonumber(new_args['start']) or 1; local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return 0; end plain = str._getBoolean( plain ); local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['pattern'] or ''; local replace = new_args['replace'] or ''; local count = tonumber( new_args['count'] ); local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return source_str; end plain = str._getBoolean( plain ); if plain then pattern = str._escapePattern( pattern ); replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences. end local result; if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ); else result = mw.ustring.gsub( source_str, pattern, replace ); end return result; end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ); end local result = str._escapePattern( pattern_str ) return result end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {}; local index = 1; local value; for i,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame(); local error_category = frame.args.error_category or 'Errors reported by Module String'; local ignore_errors = frame.args.ignore_errors or false; local no_category = frame.args.no_category or false; if str._getBoolean(ignore_errors) then return ''; end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'; if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str; end return error_str; end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error( 'No boolean value found' ); end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); end return str 1e2281946ed88fdb4745289251ce31bebfaaf702 模板:循环 10 219 435 2020-08-19T03:58:16Z 13253902 7 创建页面,内容为“{{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc…” wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata --> </noinclude> bbbcfd80f9d6f4a62d5861134ad1d6f2d34ff82c 436 435 2020-08-19T04:01:41Z 13253902 7 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|rep|1={{{2|}}}|2={{{1|<noinclude>1</noinclude>}}}}}<noinclude> 转载自:https://m.mediawiki.org/wiki/Template:Loop {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata --> </noinclude> b3793296484d4b758a543ef5abe3551317ee2b56 文件:自助洗衣店.png 6 220 438 2020-09-07T14:23:58Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:宠物店.png 6 221 439 2020-09-07T14:23:59Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:大学.png 6 222 440 2020-09-07T14:23:59Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:灯塔.png 6 223 441 2020-09-07T14:24:00Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电影院.png 6 224 442 2020-09-07T14:24:00Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:花店.png 6 225 443 2020-09-07T14:24:01Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:警察局.png 6 226 444 2020-09-07T14:24:01Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:咖啡厅.png 6 227 445 2020-09-07T14:24:02Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:乐器行.png 6 228 446 2020-09-07T14:24:02Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:美发沙龙.png 6 229 447 2020-09-07T14:24:03Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:披萨店.png 6 230 448 2020-09-07T14:24:03Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:气象台.png 6 231 449 2020-09-07T14:24:04Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:气象站.png 6 232 450 2020-09-07T14:24:04Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:犬类中心.png 6 233 451 2020-09-07T14:24:05Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:甜甜圈店.png 6 234 452 2020-09-07T14:24:05Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:停车场.png 6 235 453 2020-09-07T14:24:06Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:图书馆.png 6 236 454 2020-09-07T14:24:06Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:玩具店.png 6 237 455 2020-09-07T14:24:07Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:消防局.png 6 238 456 2020-09-07T14:24:07Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:写字楼.png 6 239 457 2020-09-07T14:24:07Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:银行.png 6 240 458 2020-09-07T14:24:08Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 470 458 2020-09-07T16:02:41Z 13253902 7 13253902上传[[文件:银行.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:邮局.png 6 215 459 428 2020-09-07T14:24:08Z 13253902 7 13253902上传[[文件:邮局.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:自行车出租行.png 6 241 460 2020-09-07T14:24:09Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:咖啡厅.png 6 227 461 445 2020-09-07T14:25:13Z 13253902 7 13253902移动页面[[文件:咖啡店.png]]至[[文件:咖啡厅.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:音乐表演场.png 6 242 462 2020-09-07T15:04:45Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:超市.png 6 243 463 2020-09-07T15:04:45Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电视台.png 6 244 464 2020-09-07T15:04:46Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:火箭船.png 6 245 465 2020-09-07T15:04:46Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:漫画书店.png 6 246 466 2020-09-07T15:04:47Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:美术馆.png 6 247 467 2020-09-07T15:04:47Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:市法院.png 6 248 468 2020-09-07T15:04:48Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:水力发电站.png 6 249 469 2020-09-07T15:04:48Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 483 469 2020-09-07T16:28:13Z 13253902 7 13253902移动页面[[文件:水电站.png]]至[[文件:水力发电站.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:宾馆.png 6 250 471 2020-09-07T16:02:41Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:出租车公司.png 6 251 472 2020-09-07T16:02:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电视塔.png 6 252 473 2020-09-07T16:02:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:管风琴厅.png 6 253 474 2020-09-07T16:02:43Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:海豚馆.png 6 254 475 2020-09-07T16:02:43Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:加油站.png 6 255 476 2020-09-07T16:02:44Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:结婚礼堂.png 6 256 477 2020-09-07T16:02:44Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:摩天大楼.png 6 257 478 2020-09-07T16:02:45Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:汽车餐厅.png 6 258 479 2020-09-07T16:02:45Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:体育场.png 6 259 480 2020-09-07T16:02:46Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:温泉疗养中心.png 6 260 481 2020-09-07T16:02:46Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:洗车场.png 6 261 482 2020-09-07T16:02:47Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电影制片厂.png 6 262 484 2020-09-07T16:51:11Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:高尔夫球场.png 6 263 485 2020-09-07T16:51:12Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:高空跳伞学校.png 6 264 486 2020-09-07T16:51:12Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:海岸巡逻队.png 6 265 487 2020-09-07T16:51:13Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:健身中心.png 6 266 488 2020-09-07T16:51:13Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:卡丁车比赛.png 6 267 489 2020-09-07T16:51:13Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:攀岩墙.png 6 268 490 2020-09-07T16:51:14Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:赛道.png 6 269 491 2020-09-07T16:51:14Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:赛马场.png 6 270 492 2020-09-07T16:51:15Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:时装小屋.png 6 271 493 2020-09-07T16:51:15Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:电子竞技馆.png 6 272 494 2020-09-07T17:16:39Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 497 494 2020-09-07T17:18:38Z 13253902 7 13253902上传[[文件:电子竞技馆.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:摩天轮.png 6 273 495 2020-09-07T17:16:40Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 499 495 2020-09-07T17:18:39Z 13253902 7 13253902上传[[文件:摩天轮.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:马戏团.png 6 274 496 2020-09-07T17:16:40Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 498 496 2020-09-07T17:18:38Z 13253902 7 13253902上传[[文件:马戏团.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:照相馆.png 6 275 500 2020-09-07T17:29:13Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 MediaWiki:Gadget-section-User 8 276 501 2020-09-15T07:13:29Z 13253902 7 创建页面,内容为“用户工具” wikitext text/x-wiki 用户工具 95eab0d93a6b00f98e67ef65935ad85b488375b9 MediaWiki:Gadgets-definition 8 56 502 147 2020-09-15T07:14:12Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js 9d4075c866dfa53f9cd565242caf30eda026507f MediaWiki:Gadget-BilibiliUser 8 277 503 2020-09-15T07:14:33Z 13253902 7 创建页面,内容为“'''BWIKI用户标签扩展工具''':自动展示用户信息。” wikitext text/x-wiki '''BWIKI用户标签扩展工具''':自动展示用户信息。 c52f2ec61f809a98b21c723ff3536423b82caa06 MediaWiki:Gadget-BilibiliUser.js 8 278 504 2020-09-15T07:15:31Z 13253902 7 创建页面,内容为“mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts");” javascript text/javascript mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts"); 45df009710a916edd18e661ca934e2edfd3a2def Widget:BilibiliVideo 274 216 505 430 2020-09-21T06:54:37Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> ccc673b2b12e0504c644a5cf789f8de66cbc3c6d 506 505 2020-09-21T07:24:47Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" width:<!--{$width}-->; height:<!--{$height}-->;max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 16d41d812a87abed1cc4856137a98e0c541a0443 507 506 2020-09-21T07:26:13Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->; height:<!--{$height}-->;max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> a86cbaf599827b04449ee0f9e458c9c0adbb3fc4 Widget:BilibiliVideo 274 216 508 507 2020-09-21T07:27:25Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com//blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->; height:<!--{$height}-->;max-width:100%;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 9527cc500535ee162ee6ab764cf0d8d8d7eef270 509 508 2020-09-21T07:32:10Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 6660962dd3e0a5c0117eda0ae58ddd09f60af6f6 510 509 2020-09-21T07:34:01Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> d21123b2fdf7833cf4c2eb4f7b6032517cc674cc 511 510 2020-09-21T07:38:44Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> af69e98e5fcc8f11effea90302c997f5101203dc 512 511 2020-09-21T07:39:45Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"> class="video-player" <iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 3030b685a4bd923e86f3926dd11e123985a333b1 513 512 2020-09-21T07:40:05Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" class="video-player"><iframe style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 8cd9b758ec8d8264f2fcef41f403b0f3d06f149a 514 513 2020-09-21T07:40:55Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 0e5f0d1e6dcf0e1789108feb73499b660e291949 515 514 2020-09-21T07:41:55Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 635c1b327565a2b44f1822a6c93f52ddae1bdb09 516 515 2020-09-21T07:42:52Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 98c491d001031f5e44fd2e42093e6a9d4f08be85 517 516 2020-09-21T07:43:29Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> fdd8ed1487f9d48b832102202f502b408f664ca0 518 517 2020-09-21T07:44:58Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 0a053a105cc687f662cb4e698a4c8a85486151cb 520 518 2020-09-21T15:00:27Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height=<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 35f9f7188998a87671ec5f1254cd15ce2b491143 521 520 2020-09-21T15:01:41Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;width:<!--{$width}-->;height:<!--{$height}-->;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> ec3066bfccd6eafa562a9a633b9db93ec1fe487c 522 521 2020-09-21T15:02:23Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 345dfd98db205ff0929026cbdc5b6d5ed5b97255 523 522 2020-09-21T15:08:57Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 512278ff53019b2a99284f79ee2cbe1143a1b446 524 523 2020-09-21T15:14:41Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 0fa01611e48b016f3d414fbdbede008cedcc7771 525 524 2020-09-21T15:21:26Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" width="<!--{$width}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> cb8a3e1869cb61f5319a34432e0642c3d9dd8822 526 525 2020-09-21T15:26:27Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" width="<!--{$width}-->"><iframe class="video-player" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 5a9272bc2ae78901f3e14201332e97c7109f7841 527 526 2020-09-21T15:29:45Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;"><iframe class="video-player" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请尝试刷新页面,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 3d17ee1dfadf974870221a647028a40fc92fc44f 528 527 2020-09-21T15:32:32Z 13253902 7 wikitext text/x-wiki /* ** BilibiliVideo ** Author:马小萌 ** Bilibili:https://space.bilibili.com/123855714 **/ "use strict"; $(function() { $(".bvideo").each(function(i){ $(this).delay(500*i).queue(function() { let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1"); let page = $(this).data("page"); let title = $(this).data("title"); let width = $(this).data("width"); let height = $(this).data("height"); let idname = isNaN(id)?"bvid":"aid"; width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == "") title = result.data.title; let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height; height=height>359?height+135:height; $("<iframe>").css({ "width":width, "height":height, "margin":"0 20px;" }).attr({ "max-width":"100%", "scrolling":"no", "border":"0", "frameborder":"no", "framespacing":"0", "allowfullscreen":"true", "src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki` }).appendTo($(`[data-id$=${id}][data-page=${page}]`)); $(`<ul> <li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li> <li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li> </ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`)); }); }); }); }); 8393cf60bfa678c303848da5453fee64333bb80f 529 528 2020-09-21T15:36:38Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } /* ** BilibiliVideo ** Author:马小萌 ** Bilibili:https://space.bilibili.com/123855714 **/ "use strict"; $(function() { $(".bvideo").each(function(i){ $(this).delay(500*i).queue(function() { let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1"); let page = $(this).data("page"); let title = $(this).data("title"); let width = $(this).data("width"); let height = $(this).data("height"); let idname = isNaN(id)?"bvid":"aid"; width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == "") title = result.data.title; let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height; height=height>359?height+135:height; $("<iframe>").css({ "width":width, "height":height, "margin":"0 20px;" }).attr({ "max-width":"100%", "scrolling":"no", "border":"0", "frameborder":"no", "framespacing":"0", "allowfullscreen":"true", "src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki` }).appendTo($(`[data-id$=${id}][data-page=${page}]`)); $(`<ul> <li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li> <li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li> </ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`)); }); }); }); });</includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 56c19f4e03a6c286b2993de90eaa585fa3879f1e 530 529 2020-09-21T15:37:17Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(function() { $(".bvideo").each(function(i){ $(this).delay(500*i).queue(function() { let id = `${$(this).data("id")}`.replace(/^av(\d+)$/i,"$1"); let page = $(this).data("page"); let title = $(this).data("title"); let width = $(this).data("width"); let height = $(this).data("height"); let idname = isNaN(id)?"bvid":"aid"; width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == "") title = result.data.title; let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); height=height==0?v.dimension.width==0?(width*9/16):width*v.dimension.height/v.dimension.width:height; height=height>359?height+135:height; $("<iframe>").css({ "width":width, "height":height, "margin":"0 20px;" }).attr({ "max-width":"100%", "scrolling":"no", "border":"0", "frameborder":"no", "framespacing":"0", "allowfullscreen":"true", "src":`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki` }).appendTo($(`[data-id$=${id}][data-page=${page}]`)); $(`<ul> <li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li> <li><a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a></li> </ul>`).appendTo($(`[data-id$=${id}][data-page=${page}]`)); }); }); }); });</includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 91cbe2bac32c6603f9526a0ff607cc1752dbb5b9 531 530 2020-09-21T15:39:12Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/player.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 6511551701447e25ed03bcb1382e962ac39313f5 532 531 2020-09-21T15:39:54Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 4380cc6f16cbe7938bbb40a76d693c4645b2addb 533 532 2020-09-21T15:44:11Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]]请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 4ac69f76ef9f425628b74870aa0ae0ad3f4eeb26 534 533 2020-09-21T15:46:53Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?100%:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 43c9cd3edc5f55a4b25d19972febd2d60b8db29c 535 534 2020-09-21T16:04:53Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ width=width==0?638:width; width=Math.min(width,$(this).parents()[2].clientWidth-40); height=v.dimension.width==0?(width*9/16):(height==0?width*v.dimension.height/v.dimension.width:height); height=height>359?height+135:height; $(this).width(width); $(this).height(height); $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->"><iframe class="video-player" style="margin:0 20px;" max-width="100%" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 5e3573b20dfa7a34a06bf9208ce8fe7c0d6e6930 536 535 2020-09-21T17:25:53Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = <!--{$width}-->; let height = <!--{$height}-->; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="width:100%;height:<!--{$height}-->;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> 7cb4b32c7618be63fafe54da850f4243387ad2cd 537 536 2020-09-21T17:33:46Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> function sleep(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } $(document).ready(function() { let id = "<!--{$id}-->"; let aid = ""; let page = <!--{$page}-->; let title = "<!--{$title}-->"; let width = "<!--{$width}-->"; let height = "<!--{$height}-->"; let idname = isNaN(id)?"bvid":"aid"; $.getJSON(`https://api.bilibili.com/x/web-interface/view?${idname}=${id}`,function(result) { if(title == ""){ title = result.data.title; } let v; result.data.pages.forEach(function(item) { if(item.page == page){ v = item; return; } }); $(`#${id}-${page} iframe`).each(function(){ $(this).attr("src",`//player.bilibili.com/blackboard/newplayer.html?aid=${result.data.aid}&page=${page}&cid=${v.cid}&high_quality=1&crossDomain=1&from=wiki`); $(this).siblings('ul').children().next().html(`<a href="https://www.bilibili.com/video/av${result.data.aid}/?p=${page}" title="${result.data.title}">${title}</a>`); }); await(sleep(1000)); }); }); </script><div id="<!--{$id}-->-<!--{$page}-->" style="width:<!--{$width}-->;height:<!--{$height}-->;"><iframe style="width:100%;height:<!--{$height}-->;min-height: 200px;" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><ul><li>如果无法观看,请检查是否启用了H5播放器,或点击下方链接</li><li></li></ul></div></includeonly><noinclude>请使用[[模板:B站视频|<nowiki>{{B站视频}}</nowiki>]] *代码来自:[https://wiki.biligame.com/factorio/Widget:BilibiliVideo 异星工厂WIKI]</noinclude> aee6d039eea3cac6e451d75e357fe533c47a3e17 模板:B站视频 10 217 519 431 2020-09-21T07:48:51Z 13253902 7 wikitext text/x-wiki <includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{3|}}}|page={{{2|1}}}|width={{{4|600}}}|height={{{5|0}}}}}</includeonly> <noinclude> ==使用方法== ====调用参数==== <pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre> ====必填==== *av号:全数字{{#info:av号或bv号只填一个|info}} *bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}} ====选填==== *分P号:默认不填即为1 *宽 高:默认不填为638*359 ====示例==== 你所写的 <pre>{{B站视频|22594153}} {{B站视频|BV1CW411G7eF}}</pre> 显示内容 {{B站视频|22594153}} <br> {{B站视频|BV1CW411G7eF}} </noinclude> {{#css: .video-player{ width:100%; height: 35vw; min-height: 200px; } }} d558c1195ae49b1ac09588d5f52e0362973809a4 538 519 2020-09-21T17:47:58Z 13253902 7 wikitext text/x-wiki <includeonly>{{#widget:BilibiliVideo|id={{{1}}}|title={{{4|}}}|page={{{2|1}}}|width={{#if:{{{3|}}}|{{{3|}}}px|100%}}|height={{#if:{{{3|}}}|calc({{{3|}}}px*9/16)|35vw}}}}</includeonly> <noinclude> ==使用方法== ====调用参数==== <pre>{{B站视频|av号或bv号|分P号|视频名称|宽|高}}</pre> ====必填==== *av号:全数字{{#info:av号或bv号只填一个|info}} *bv号:英文大小写和数字{{#info:av号或bv号只填一个|info}} ====选填==== *分P号:默认不填即为1 *宽 高:默认不填为638*359 ====示例==== 你所写的 <pre>{{B站视频|22594153}} {{B站视频|BV1CW411G7eF}}</pre> 显示内容 {{B站视频|22594153}} <br> {{B站视频|BV1CW411G7eF|1|800|梦想小镇}} </noinclude> 0f74af0c2360a55485600b2dba4f1f8460905e59 模板:房屋表 10 24 539 124 2020-11-16T03:43:30Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | style="font-size:xx-large;"| {{{3|}}} | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}} | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} </includeonly> ae1f1dd7c7c746ea0cada4226349006813a88d80 540 539 2020-11-16T03:51:52Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | style="font-size:2em;"| {{{3|}}} | style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}} | style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}} | style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} </includeonly> 0480421ab8aa4af27c59ea362fa64b2f65180867 房屋 0 23 541 281 2020-11-16T03:53:24Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |?占地 |link=none |sort=金币 |order=asc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} fb5b4a99cc0b829435cd0e6758a5620609acd4d8 房屋/公寓综合楼 0 279 542 2020-11-20T07:38:46Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=公寓综合楼 |等级=86、90<!-- 用顿号隔开 --> |金币=46400 |人口=580 |经验=580 |时间(天)=1 |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} b87b1408870fff6bad1d0f2339ee842f2208ae47 房屋/带阳台的房子 0 280 543 2020-11-20T07:38:47Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带阳台的房子 |等级=88<!-- 用顿号隔开 --> |金币=51200 |人口=640 |经验=640 |时间(天)=1 |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} 5c01d245b2fb4536f6ef7654fbe67c2078b4cead 房屋/共管公寓 0 75 544 264 2020-11-20T07:38:47Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 76803c9b048c304cbdedad67cad7b052a2a8df0d 547 544 2020-11-20T07:41:27Z 13253902 7 撤销[[Special:Contributions/13253902|13253902]]([[User talk:13253902|讨论]])的版本544 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)= |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} d1bb5855503fb8d8199fa5a7afeb37ffc534aace 房屋/高层建筑 0 281 545 2020-11-20T07:38:47Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=高层建筑 |等级=92<!-- 用顿号隔开 --> |金币=61000 |人口=760 |经验=760 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} c4b50bda3ed316c9bedb04345f7fff298135f287 房屋/带泳池的高层 0 282 546 2020-11-20T07:38:48Z 13253902 7 批量编辑 by BwikiBatchEditor wikitext text/x-wiki {{房屋 |中文=带泳池的高层 |等级=92<!-- 用顿号隔开 --> |金币=66000 |人口=820 |经验=820 |时间(天)=1 |时间(时)=22 |时间(分)= |时间(秒)= |占地=1×2 }} 4ba40e9dd15d9386b78c90600532e9ab151084bc 房屋/共管公寓(90) 0 283 548 2020-11-20T07:42:28Z 13253902 7 创建页面,内容为“{{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |…” wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 76803c9b048c304cbdedad67cad7b052a2a8df0d 549 548 2020-11-20T07:43:59Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=共管公寓(90) |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 39bb5bd41f980d9e85bbf9b367ef97b6b1f706dc MediaWiki:Gadgets-definition 8 56 550 502 2021-01-08T02:35:19Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js 9b57a82bee4e6eedbd3d50b89c097c7aaeda26e8 MediaWiki:Gadget-BilibiliUser.js 8 278 551 504 2021-01-08T02:37:41Z 13253902 7 javascript text/javascript mw.loader.load("https://wiki.biligame.com/factorio/User:123855714/BilibiliUser.js?action=raw&ctype=text/javascript", "text/javascript"); 8a7a78bfb1f1a346059d25c0ce0b301b407b8b52 552 551 2021-01-08T02:38:54Z 13253902 7 javascript text/javascript mw.loader.load("/factorio/load.php?modules=ext.gadget.BilibiliUser&only=scripts"); 45df009710a916edd18e661ca934e2edfd3a2def 553 552 2021-01-08T02:40:05Z 13253902 7 javascript text/javascript mw.loader.load("https://wiki.biligame.com/factorio/User:123855714/BilibiliUser.js?action=raw&ctype=text/javascript", "text/javascript"); 8a7a78bfb1f1a346059d25c0ce0b301b407b8b52 MediaWiki:Common.js 8 33 554 120 2021-01-11T05:16:29Z 13253902 7 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); a6e7e60baab2fbe76e2fb13f30136471bf62939c Dqw 0 284 555 2021-01-18T09:40:43Z 509732352 106 创建页面,内容为“<!--<tabber> 序章={{封装11}} |-| 第一章={{封装22}} |-| 第二章={{封装22}} </tabber>--> {{#tag:tabber| 序章={{封装11}} {{!}}-{{!}} 1={{封装22}} }}…” wikitext text/x-wiki <!--<tabber> 序章={{封装11}} |-| 第一章={{封装22}} |-| 第二章={{封装22}} </tabber>--> {{#tag:tabber| 序章={{封装11}} {{!}}-{{!}} 1={{封装22}} }} {{#Widget:测试}} 这里是一段文字中的#号 {{#cscore:9388102|pages}} [[封面::Tlgd icon.png]] [[初始耐久::1000]]__NOTOC__ ==DD== <ul class="nav nav-tabs"> <li class="active"><a href="#">Home</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Menu 1 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Submenu 1-1</a></li> <li><a href="#">Submenu 1-2</a></li> <li><a href="#">Submenu 1-3</a></li> </ul> </li> <li><a href="#">Menu 2</a></li> <li><a href="#">Menu 3</a></li> </ul> ==list== <ul class="list-group"> <li class="list-group-item">New <span class="badge">2020/12/9</span></li> <li class="list-group-item">Deleted <span class="badge">2020/12/9</span></li> <li class="list-group-item">Warnings <span class="badge">2020/12/9</span></li> </ul> ==图片== [[文件:C++.png|class=img-thumbnail|link=]] ==巨幕== <div class="jumbotron"> <h1>Hello, world!</h1> <p>...</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p> </div> ==页头== <div class="page-header"> <h1>Example page header <small>Subtext for header</small></h1> </div> ==111== <div class="row"> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> [[文件:C++.png|link=]] <div class="caption"> <h3>Thumbnail label</h3> <p>...</p> <p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p> </div> </div> </div> </div> ==面包屑== <ol class="breadcrumb"> <li><a href="#">Home</a></li> <li><a href="#">Library</a></li> <li class="active">Data</li> </ol> ==标题和文字高度相等的等高卡片布局== <div class="row"> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary" style="width:100%">按go按go按go按go</span>]] </div> </div> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary">按go按go按go按go</span>]] </div> </div> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary">按go按go按go按go</span>]] </div> </div> </div> ==页面代码== <SyntaxHighlight lang=html> <div class="row"> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary">按go按go按go按go</span>]] </div> </div> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary">按go按go按go按go</span>]] </div> </div> <div class="col-md-4 col-sm-6"> <div class="card-001" style=""> <div class="card-001-img" style="">[[文件:C++.png|link=]]</div> <div class="card-001-title" style="">'''<big><big>标题</big></big>'''</div> <div class="card-001-p" style=""> <p>感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢感谢</p> </div > [[首页|<span class="btn btn-primary">按go按go按go按go</span>]] </div> </div> </div> </SyntaxHighlight> ==css== <SyntaxHighlight lang=css> .card-001{width:100%;height:400px;padding: 3%;border:2px solid #a1a1a1;border-radius:5px;} .card-001-img{width:100%;height:auto} .card-001-title{width:100%;height:9%} .card-001-p{width:100%;height:35%;border-top-width: 3px;} </SyntaxHighlight> {{#css: .card-001{width:100%;height:400px;padding: 3%;border:2px solid #a1a1a1;border-radius:5px;margin-top:16px} .card-001-img{width:100%;height:auto} .card-001-title{width:100%;height:9%} .card-001-p{width:100%;height:35%;border-top-width: 3px;} }} b5d3f660ba78b4bb35d2e38f959c874a1a5ff17a Widget:Test 274 285 557 2021-02-20T07:00:12Z 13253902 7 新建 wikitext text/x-wiki <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); </script> <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> f5fcd8f589e2db2ce4ca1cc577be57441acc386d 558 557 2021-02-20T07:01:58Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); </script></includeonly> <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> a98eedf55a9af992bd02392749897522c0d66f34 测试 0 286 559 2021-02-20T07:02:53Z 13253902 7 创建页面,内容为“{{#widget:Test}}” wikitext text/x-wiki {{#widget:Test}} 44ff42617af18cfa0e3d037244617a3adf5e4247 561 559 2021-02-20T07:03:24Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> 7767a83c2f5d14807b8c2f44d0e09db87471296d Widget:Test 274 285 560 558 2021-02-20T07:03:19Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); </script></includeonly> 2c7a25f4cc065bcbd0ccd68a66c1e09442e10182 562 560 2021-02-20T07:12:24Z 13253902 7 wikitext text/x-wiki <includeonly><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename={{#ask:[[分类:房屋]]|link=none}} </script> </includeonly> 4e1e3e9c2f3c0705216fbf5cdc36dc72f249937b 563 562 2021-02-20T07:13:54Z 13253902 7 wikitext text/x-wiki <includeonly> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename={{#ask:[[分类:房屋]]|link=none}}; </script> </includeonly> 3bcc1d1ae42ccfdac5f139c1c0022238f4f033d5 564 563 2021-02-20T07:16:01Z 13253902 7 wikitext text/x-wiki <includeonly> {{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }} <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = Housename; </script> </includeonly> 745e680c2d4aa4541aa9581aca1ffcc1c35e8de2 房屋/共管公寓(90) 0 283 565 549 2021-05-10T04:39:42Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 76803c9b048c304cbdedad67cad7b052a2a8df0d 模板:房屋 10 11 566 114 2021-05-12T16:41:29Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <includeonly>[[分类:房屋]]</includeonly> 55839d5087f183ac4bcff4f69fe1642343a49f74 569 566 2021-05-12T17:02:47Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden">最大数量:{{{最大数量|}}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}</div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> 0d2ce747f887bf3ce5a592c120e149cf38de7c63 570 569 2021-05-12T17:04:56Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden">最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}} 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}</div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> 79f4be2b7ce1c2ea0e195145be727f2e4c1d5b3d 571 570 2021-05-12T17:07:18Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> 3ccb18d248b03e6b8eafa4383d09f5971b92eebe 模板:社区建筑 10 34 567 119 2021-05-12T16:42:42Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 2ff8dcc546c9a7f0e0866a1e8c3761a20155e502 568 567 2021-05-12T16:44:31Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <includeonly>[[分类:社区建筑]]</includeonly> 6b12a6ca7144e3445d670ed78da2c774a0735b89 572 568 2021-05-12T17:18:03Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 所需金币:{{{金币|}}}<br> 所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|钻头×{{{电锯|}}} }}{{#if:{{{电钻|}}}|钻头×{{{电钻|}}} }}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br> 获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br> </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:社区建筑]]</includeonly> 01fad49c14e5721524a2fc6fbcef7e5b1c103d12 573 572 2021-05-12T17:20:53Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 所需金币:{{{金币|}}}<br> 所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|钻头×{{{电锯|}}} }}{{#if:{{{电钻|}}}|钻头×{{{电钻|}}} }}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br> 获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br> </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:社区建筑]]</includeonly> 7a2ac2c93e998e6ad62a09def31031453efc0bec 574 573 2021-05-12T17:26:30Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 所需金币:{{{金币|}}}<br> 所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br> 获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br> </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:社区建筑]]</includeonly> c0d75e81b9ae47a2fc8af79dc9b0d82e8141152c MediaWiki:Gadget-section-System 8 287 575 2021-05-22T06:08:44Z 13253902 7 创建页面,内容为“系统” wikitext text/x-wiki 系统 1a1f6dff782621b434d4c4cf9fdae5c07cf2c0c6 MediaWiki:Gadgets-definition 8 56 576 550 2021-05-22T06:09:29Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js a70b5e940cd0dee199133b89075491dd9fc90baa MediaWiki:Gadget-ScrollToc 8 288 577 2021-05-22T06:09:56Z 13253902 7 创建页面,内容为“'''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。” wikitext text/x-wiki '''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。 c77baa3cbf784c58f6bbf1e02f4358e6b20310cc MediaWiki:Gadget-ScrollToc.js 8 289 578 2021-05-22T06:10:39Z 13253902 7 创建页面,内容为“mw.loader.load("/wiki/load.php?modules=ext.gadget.ScrollToc&only=scripts");” javascript text/javascript mw.loader.load("/wiki/load.php?modules=ext.gadget.ScrollToc&only=scripts"); f1488d89682dd8361fb84a163b25d35da0333e10 Widget:测试 274 290 579 2021-06-02T06:21:39Z 13253902 7 测试 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> c7d5122515ba3c1c91ca930571f61c3c33c202b8 580 579 2021-06-02T07:03:53Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> {| class="wikitable" style="width:100%;" |- !兵刃等级 |<div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div> !灵脉光渊最高等级 |<div class="pure-control-group"><label for="place"></label><select id="place"></select></div> |- |colspan=4| <div id="result"> <div id='total'><span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> |} * [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻] * [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6] e856d260079643c2c758c17827b952f4f15b26b3 581 580 2021-06-02T07:10:26Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tbody> <tr> <th>兵刃等级</th> <td><div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div> </td> <th>灵脉光渊最高等级 </th> <td><div class="pure-control-group"><label for="place"></label><select id="place"></select></div> </td></tr> <tr> <td colspan="4"> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </td></tr></tbody></table> * [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻] * [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6] ab984c80f419d09b36dff3e9d9ef70b1e31c1911 582 581 2021-06-02T07:12:01Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> * [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻] * [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6] 92b0fb36c9ea3bb6db86ab882c39b72c67d1eac8 583 582 2021-06-02T07:15:40Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div> <div class="pure-control-group"><label for="name">属性:</label><select id="name"></select></div> <div class="pure-control-group"><label for="place">灵脉光渊最高等级:</label><select id="place"></select></div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> * [https://bbs.nga.cn/read.php?tid=26330724 数据来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=42444741 啦啦子嘻] * [http://i2534.gitee.io/tdj/calculator/weapon/index.html 代码来源]:NGA玩家 [https://bbs.nga.cn/nuke.php?func=ucp&uid=166963 9e6] ea73ff0e3645db969a250447806c9ebdbc0c8bc8 584 583 2021-06-02T07:16:07Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div class="pure-control-group"><label for="lvs">等级:</label>从<select id="lvs"></select>至<select id="lve"></select></div> <div class="pure-control-group"><label for="name">属性:</label><select id="name"></select></div> <div class="pure-control-group"><label for="place">灵脉光渊最高等级:</label><select id="place"></select></div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> 660a5c31c1dc9cc682221345651a10abf651f268 585 584 2021-06-02T07:17:25Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> c7d5122515ba3c1c91ca930571f61c3c33c202b8 586 585 2021-06-02T07:18:25Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> 3189ab3a45a32da778c0c478831f02a1b5f1cd54 587 586 2021-06-02T07:19:30Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> c7d5122515ba3c1c91ca930571f61c3c33c202b8 588 587 2021-06-02T07:29:22Z 13253902 7 wikitext text/x-wiki <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <form class="pure-form pure-form-aligned"> <fieldset> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <!-- <div class="pure-controls"> <button id="btnCalc" class="pure-button">计算</button> </div> --> </fieldset> </form> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> <script> const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> 9184aada2d4acaa25408e9276a1c83a0e1132d4d 589 588 2021-06-02T11:42:03Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); </script> <div> <div id="tooltip">根据NGA论坛天地劫手游板块的<a href="https://bbs.nga.cn/read.php?tid=26330724&_ff=771" target="_blank">帖子数据</a>制作</div> <form class="pure-form pure-form-aligned"> <fieldset> <div class="pure-control-group"> <label for="lvs">等级:</label>从 <select id="lvs"></select>至 <select id="lve"></select> </div> <div class="pure-control-group"> <label for="name">属性:</label> <select id="name"></select> </div> <div class="pure-control-group"> <label for="place">灵脉光渊最高等级:</label> <select id="place"></select> </div> <!-- <div class="pure-controls"> <button id="btnCalc" class="pure-button">计算</button> </div> --> </fieldset> </form> <div id="result"> <div id='total'> <span>需要材料总计:</span> <table class="pure-table"> <thead> <tr></tr> </thead> <tbody> <tr></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> </div> <script> const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> a085112d719264109e1b8dce8a4f104a65e174eb 590 589 2021-06-02T11:44:56Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> 213100e7d78351a531ba2f09334d6e31f7d0adc6 591 590 2021-06-02T12:23:45Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tbody> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </tbody> </table> 5c12c857bddab738c414560da83cd2f850574dcf 592 591 2021-06-02T12:39:44Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tbody> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性:</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </tbody> </table> b91ee1913cb7cfc107e18b6fbbc7cd9c045631cf 593 592 2021-06-02T12:54:18Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性:</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </table> ebe842fc30b7c5bfd8d4eda19772fa86e9c0d577 594 593 2021-06-02T13:00:14Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性:</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </table> <div id="result"> <div id='total'><span>需要材料总计:</span> <table class="pure-table wikitable"> <thead> <tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr> </thead> <tbody> <tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> d6f249fe89f8c680e25aaaee2f3f6928b76dbd51 595 594 2021-06-02T13:02:44Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性:</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="pure-table wikitable"> <thead> <tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr> </thead> <tbody> <tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 990873bcb58fe2b37bd9c68fe1589e7ec65023f2 596 595 2021-06-02T14:43:47Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <thead> <tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr> </thead> <tbody> <tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 7b9a7507ce08747920f414d78b5c97a4fb5b3b94 597 596 2021-06-02T14:45:51Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr><td>135</td><td>115</td><td>128</td><td>141</td><td>87</td><td>33</td><td>45840</td></tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 817a079ddaabea47ef3948516c1c09434a5bd3f6 598 597 2021-06-02T14:47:47Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> <tr> <td>[[文件:经验.png]]</td> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> c6400cc6fd31f02477b9722a85c7dc248537aad3 599 598 2021-06-02T14:51:16Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> <thead> <tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr> </thead> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 1fc7cf9a6fcec1dd164546f790e57358545325c5 600 599 2021-06-02T14:52:02Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <thead> <tr><th>燧炎之铁</th><th>燧炎之铜</th><th>燧炎之银</th><th>燧炎之精</th><th>火凛燧炎</th><th>二阶绝材</th><th>金钱</th></tr> </thead> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 51c7de1fb096da3ab73d2a919a7f370d24057131 601 600 2021-06-02T15:00:39Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> {{测试}} <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 10237554bc7a90ace30e7f8d9bd09e7fe9c1dc1e 602 601 2021-06-02T15:03:35Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> c1fbc951be8f68c9b5a6fcd740a79f4091d5c7d6 603 602 2021-06-02T15:07:00Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 47b5f710c70f03a98e2e3ca4b71a762f9202ef73 604 603 2021-06-02T15:11:25Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <div id="result"> <div id='total'> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </div> </div> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> 4293cb327956dc4a9af0e70fe50060dc1f9de3ee 605 604 2021-06-02T15:14:14Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 4571544fea8d4aa1446fdaf329e2ae041ad15e2b 606 605 2021-06-02T15:15:57Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> a19592b6cae36bbfcc43269aa5b695f6f8e10c49 607 606 2021-06-02T15:21:34Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected>60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"><option value="暗" selected>暗</option></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <thead> <tr></tr> </thead> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> d79272c6d9ac6786b599101a5788c147198a60df 608 607 2021-06-02T15:26:01Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"><option value="<!--{$prop}-->" selected></option></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <thead> <tr></tr> </thead> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 91db34a6558ae19ce9b3c9d66c838516aabadf92 Widget:测试 274 290 609 608 2021-06-02T15:38:27Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <th colspan="4">需要材料总计</th> </tr> </table> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td>135</td> <td>115</td> <td>128</td> <td>141</td> <td>87</td> <td>33</td> <td>45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> 9a4f35641b9c06794559fdf246d52caa63423b1a 610 609 2021-06-02T15:40:18Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td>${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </table> 6401be99b1b1ed560c776a065ee83ead19306743 611 610 2021-06-02T15:42:12Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </table> f2199e085237c5009cdb02c6a566390d9966d68d 612 611 2021-06-02T15:44:29Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['<font color=red>燧炎之铁</font>', '<font color=red>燧炎之铜</font>', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> </table> <div id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span><div> 0c838525721cc2d4fb14d8de36f364e942ac051f 613 612 2021-06-02T15:49:45Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>td').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td id="info"> <span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> </td> </tr> </table> 01c2567f96a1678261084705605bdcc99226d86e 614 613 2021-06-02T15:51:07Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span></div> </td> </tr> </table> f920c1746d6cd1fe67bcb7bc665f3f843a61b904 615 614 2021-06-02T15:52:09Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> b2bf91934ada043ef23a22be4f7546afad146521 616 615 2021-06-02T15:53:19Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td colspan="5"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> dfb3d5dc6bf3cb6a748a7b49237b1a7acfb78b6b 617 616 2021-06-02T15:55:02Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td colspan="5"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> a4e88b537ef97791a91c08e5a1fd4b96c3f811a2 618 617 2021-06-02T15:55:56Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:25%"><label for="lvs">等级</label></th> <td style="width:25%">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:25%"><label for="place">灵脉光渊最高等级</label></th> <td style="width:25%"><select id="place"></select></td> </tr> <tr> <td colspan="5"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 18e5698b15397608677e92963b0f888b063ce5a0 619 618 2021-06-02T16:01:59Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('Level invalid'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 8d3749df2ad1d1e4115dd9de3c86a487f80971a1 620 619 2021-06-02T16:04:23Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('淬火后兵刃等级必须大于淬火前兵刃等级'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 69db907ad8e038d330eff85d7ded4c2eb60d13fc 621 620 2021-06-02T16:09:13Z 13253902 7 wikitext text/x-wiki // 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('淬火后兵刃等级必须大于淬火前兵刃等级'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 7a304c2b9d483923166a49d4bd94c44aeee205c2 622 621 2021-06-02T16:09:57Z 13253902 7 wikitext text/x-wiki <!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('淬火后兵刃等级必须大于淬火前兵刃等级'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 2f8e89f29b3f1c86c266c34597c1b45176d8240c 623 622 2021-06-02T16:12:10Z 13253902 7 wikitext text/x-wiki <!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('淬火后兵刃等级必须大于淬火前兵刃等级'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"></select></td> <th style="width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> 199682b3704f19c709db75e0572eeead695eb8dd 624 623 2021-06-02T16:39:57Z 13253902 7 wikitext text/x-wiki <!-- 代码转载自:http://i2534.gitee.io/tdj/calculator/weapon/index.html --> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script> $(() => { const display = () => { const lvMin = parseInt($('#lvs').val()), lvMax = parseInt($('#lve').val()); const pi = parseInt($('#place').val()); const ret = calc(lvMin, lvMax, pi); const th = $('#total thead>tr').empty(), tr = $('#total tbody>tr').empty(); const info = $('#info>div').empty(); if (ret) { const total = ret[0], count = ret[1], residue = ret[2]; const ns = names[$('#name').val()]; if (ns) { for (let i = 0; i < ns.length; i++) { th.append(`<th>${ns[i]}</th>`); tr.append(`<td style="width:calc(100% / 7);">${total[i]}</td>`); } } let html = ''; for (let i = 0; i < count.length; i++) { if (count[i] > 0) { html += `<div>${placeLevel[i]} = ${count[i]}<div>`; } } let r = ''; for (let i = 0; i < residue.length; i++) { if (residue[i] > 0) { r += `<div>${ns[i]} = ${residue[i]}<div>`; } } if (r.length > 0) { html += '<span>缺少(灵脉光渊等级不足):</span>' + r; } info.html(html); } }; const option = (parent, val, text) => { const opt = $('<option></option>'); opt.val(val); if (text) { opt.text(text); } else { opt.text(val); } parent.append(opt); }; for (let i = 0; i < consume.length; i++) { option($('#lvs'), i, i + 1); option($('#lve'), i, i + 1); } for (let n in names) { option($('#name'), n); } for (let i = 0; i < placeLevel.length; i++) { option($('#place'), i, placeLevel[i]); } $('select').on('change', display); $('#btnCalc').click(display); }); const names = { '炎': ['燧炎之铁', '燧炎之铜', '燧炎之银', '燧炎之精', '火凛燧炎', '二阶绝材', '金钱'], '雷': ['雳刹之铁', '雳刹之铜', '雳刹之银', '雳刹之精', '雷霆雳刹', '二阶绝材', '金钱'], '冰': ['寒幽之铁', '寒幽之铜', '寒幽之银', '寒幽之精', '凌霜寒幽', '二阶绝材', '金钱'], '暗': ['暗厉之铁', '暗厉之铜', '暗厉之银', '暗厉之精', '九幽暗厉', '二阶绝材', '金钱'], '光': ['晔星之铁', '晔星之铜', '晔星之银', '晔星之精', '华晶晔星', '二阶绝材', '金钱'] }; //0-59 const consume = [ [0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 10], [1, 0, 0, 0, 0, 0, 20], [1, 0, 0, 0, 0, 0, 30], [2, 0, 0, 0, 0, 0, 40], [2, 0, 0, 0, 0, 0, 50], [2, 0, 0, 0, 0, 0, 60], [3, 0, 0, 0, 0, 0, 70], [3, 0, 0, 0, 0, 0, 80], [3, 0, 0, 0, 0, 0, 90], [4, 0, 0, 0, 0, 0, 100], [4, 0, 0, 0, 0, 0, 110], [4, 0, 0, 0, 0, 0, 120], [5, 0, 0, 0, 0, 0, 130], [5, 0, 0, 0, 0, 0, 140], [5, 1, 0, 0, 0, 0, 150], [5, 1, 0, 0, 0, 0, 160], [5, 1, 0, 0, 0, 0, 170], [5, 2, 0, 0, 0, 0, 180], [5, 2, 0, 0, 0, 0, 190], [5, 2, 0, 0, 0, 0, 200], [5, 3, 0, 0, 0, 0, 210], [5, 3, 0, 0, 0, 0, 220], [5, 3, 0, 0, 0, 0, 230], [5, 4, 1, 0, 0, 0, 240], [5, 4, 1, 0, 0, 0, 250], [5, 4, 1, 0, 0, 0, 260], [5, 5, 1, 0, 0, 0, 280], [5, 5, 2, 0, 0, 0, 300], [5, 5, 2, 0, 0, 0, 350], [5, 5, 2, 0, 0, 0, 400], [5, 5, 2, 0, 0, 0, 450], [5, 5, 3, 0, 0, 0, 500], [5, 5, 3, 0, 0, 0, 550], [0, 5, 3, 1, 0, 0, 600], [0, 5, 3, 2, 0, 0, 650], [0, 5, 4, 2, 0, 0, 700], [0, 5, 4, 3, 0, 0, 750], [0, 5, 4, 3, 0, 0, 800], [0, 5, 4, 3, 0, 0, 850], [0, 5, 5, 4, 0, 0, 900], [0, 5, 5, 4, 0, 0, 950], [0, 5, 5, 4, 0, 0, 1000], [0, 5, 5, 5, 0, 0, 1100], [0, 0, 6, 5, 1, 0, 1200], [0, 0, 6, 5, 2, 0, 1300], [0, 0, 6, 5, 3, 0, 1400], [0, 0, 6, 5, 3, 0, 1500], [0, 0, 7, 6, 4, 0, 1600], [0, 0, 7, 6, 4, 0, 1700], [0, 0, 7, 6, 5, 0, 1800], [0, 0, 7, 7, 5, 0, 1900], [0, 0, 8, 7, 6, 0, 2000], [0, 0, 8, 7, 6, 0, 2100], [0, 0, 0, 8, 7, 1, 2200], [0, 0, 0, 8, 7, 3, 2300], [0, 0, 0, 8, 8, 5, 2400], [0, 0, 0, 9, 8, 7, 2500], [0, 0, 0, 9, 9, 8, 2600], [0, 0, 0, 9, 9, 9, 2700] ]; const placeLevel = [10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]; const produce = [ [13, 0, 0, 0, 0, 0], //10 [14, 3, 0, 0, 0, 0], //15 [13, 4, 0, 0, 0, 0], //20 [14, 5, 2, 0, 0, 0], //25 [15, 5, 2, 0, 0, 0], //30 [0, 8, 2, 1, 0, 0], //35 [0, 7, 4, 3, 0, 0], //40 [0, 0, 3, 3, 1, 0], //45 [0, 0, 5, 3, 2, 0], //50 [0, 0, 0, 4, 2, 1], //55 [0, 0, 0, 4, 3, 1] //60 ]; const calc = (lvMin, lvMax, placeIndex) => { const ls = parseInt(lvMin), le = parseInt(lvMax); if (le <= ls) { alert('淬火后兵刃等级必须大于淬火前兵刃等级'); } else { const total = new Array(consume[ls].length).fill(0); for (let i = ls; i <= le; i++) { const item = consume[i]; for (let n = 0; n < item.length; n++) { total[n] += item[n]; } } //console.log(ret); const residue = total.slice(0, total.length - 1); const count = new Array(placeLevel.length).fill(0); for (let r = residue.length - 1; r >= 0; r--) { if (residue[r] <= 0) { continue; } for (let i = placeIndex; i >= 0; i--) { const item = produce[i]; if (item[r] > 0) { let c = Math.ceil(residue[r] / item[r]); count[i] = c; for (let n = 0; n < item.length; n++) { residue[n] -= item[n] * c; } break; } } } //console.log(count); return [total, count, residue]; } }; </script> <div id="result"> <div id='total'> <table class="wikitable text-center" style="width:100%;margin-top:calc(-1em - 1px);"> <tbody> <tr> <td style="width:calc(100% / 7);">135</td> <td style="width:calc(100% / 7);">115</td> <td style="width:calc(100% / 7);">128</td> <td style="width:calc(100% / 7);">141</td> <td style="width:calc(100% / 7);">87</td> <td style="width:calc(100% / 7);">33</td> <td style="width:calc(100% / 7);">45840</td> </tr> </tbody> </table> </div> </div> <table class="wikitable text-center" style="width:100%;"> <tr> <th style="width:calc(100% / 7);"><label for="lvs">等级</label></th> <td style="width:calc(100% / 3.5);">从<select id="lvs"></select>至<select id="lve"><option value="59" selected class="hidden">60</option></select></td> <td style="display:none;"><label for="name">属性</label><select id="name"><option value="<!--{$prop}-->" selected class="hidden"></option></select></td> <th style="width:calc(100% / 3.5);"><label for="place">灵脉光渊最高等级</label></th> <td style="width:calc(100% / 3.5);"><select id="place"></select></td> </tr> <tr> <td colspan="5" class="text-left"> <div id="info"><span>需要刷灵脉光渊次数(非精确值, 高额时产出翻倍, 并且因为小数的存在, 每次产出可能相差1个数量):</span> <div></div> </div> </td> </tr> </table> e67799990424aa07a3bd2de215de32e553c5fb7a 625 624 2021-06-03T01:27:22Z 13253902 7 清空页面 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 首页 0 1 626 160 2021-08-09T06:40:56Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。  本WIKI为开放编辑权限,任何人都可以在遵守 [https://wiki.biligame.com/wiki/WIKI%E7%A4%BE%E5%8C%BA%E8%A7%84%E5%88%99 BWIKI社区规则] 的前提下进行内容制作,违规者将会被封禁。 QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> ---- <p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p> <div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> 862424bfcfea1a2b8196d1bc94530ee2079756fa 模板:社区建筑 10 34 627 574 2021-08-11T05:28:24Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面|}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}<nowiki></nowiki> {{#if:{{{玻璃|}}}|[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{玻璃|}}}|}}<nowiki></nowiki> {{#if:{{{砖块|}}}|[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{砖块|}}}|}}<nowiki></nowiki> {{#if:{{{混凝土路面|}}}|[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{混凝土路面|}}}|}}<nowiki></nowiki> {{#if:{{{钻头|}}}|[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{钻头|}}}|}}<nowiki></nowiki> {{#if:{{{电锯|}}}|[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{电锯|}}}|}}<nowiki></nowiki> {{#if:{{{电钻|}}}|[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{电钻|}}}|}}<nowiki></nowiki> |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 所需金币:{{{金币|}}}<br> 所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br> 获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br> </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:社区建筑]]</includeonly> 0633fd6915cb1256a41522a73888632e23599de3 628 627 2021-08-11T05:30:03Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |等级={{{等级|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |现金={{{现金|}}} |占地={{{占地|}}} |类型={{{类型|}}} |玻璃={{{玻璃|}}} |砖块={{{砖块|}}} |混凝土路面={{{混凝土路面|}}} |钻头={{{钻头|}}} |电锯={{{电锯|}}} |电钻={{{电钻|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- | style="padding:10px;"|<includeonly>[[文件:{{{中文|}}}.png|400px|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! 解锁等级 ! 建造时间 ! 占地面积 |- | <div style="position: relative;display:inline-block;text-align:center;">[[文件:星级.png|x68px|link=]]<span style="position: absolute;width:60px;font-size:x-large;text-shadow: 1px 1px 1px #000;left: 0px;top: 18px;color:white;">{{{等级|}}}</span></div> | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! colspan="3"|所需金币材料 |- | colspan="3" style="font-size:x-large;"| <div style="display:inline-block;">[[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}}</div> <div style="display:inline-block;">{{#if:{{{玻璃|}}}|[[文件:玻璃.png|x40px|class=img-kk|link=]]<br>{{{玻璃|}}}|}}</div> <div style="display:inline-block;">{{#if:{{{砖块|}}}|[[文件:砖块.png|x40px|class=img-kk|link=]]<br>{{{砖块|}}}|}}</div> <div style="display:inline-block;">{{#if:{{{混凝土路面|}}}|[[文件:混凝土路面.png|x40px|class=img-kk|link=]]<br>{{{混凝土路面|}}}|}}</div> <div style="display:inline-block;">{{#if:{{{钻头|}}}|[[文件:钻头.png|x40px|class=img-kk|link=]]<br>{{{钻头|}}}|}}</div> <div style="display:inline-block;">{{#if:{{{电锯|}}}|[[文件:电锯.png|x40px|class=img-kk|link=]]<br>{{{电锯|}}}|}}</div> <div style="display:inline-block;">{{#if:{{{电钻|}}}|[[文件:电钻.png|x40px|class=img-kk|link=]]<br>{{{电钻|}}}|}}</div> |- ! 获得人口 ! 获得经验 ! 获得现金 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:现金.png|x40px|class=img-kk|link=]]<br>+{{{现金|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 所需金币:{{{金币|}}}<br> 所需材料:{{#if:{{{玻璃|}}}|玻璃×{{{玻璃|}}} }}{{#if:{{{砖块|}}}|砖块×{{{砖块|}}} }}{{#if:{{{混凝土路面|}}}|混凝土路面×{{{混凝土路面|}}} }}{{#if:{{{钻头|}}}|钻头×{{{钻头|}}} }}{{#if:{{{电锯|}}}|电锯×{{{电锯|}}} }}{{#if:{{{电钻|}}}|电钻×{{{电钻|}}} }}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}}<br> 获得现金:{{#if:{{{现金|}}}|+{{{现金|}}}|}}<br> </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:社区建筑]]</includeonly> 4e3cc137df19ef686fe6ea0bf5b57a1e243bd981 文件:房屋 带阳台的房子.png 6 291 629 2021-08-20T08:15:55Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带泳池的高层.png 6 292 630 2021-08-20T08:15:55Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 高层建筑.png 6 293 631 2021-08-20T08:15:56Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓综合楼.png 6 294 632 2021-08-20T08:15:56Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 MediaWiki:Editsummary.js 8 295 633 2021-08-27T07:30:48Z 13253902 7 新建 javascript text/javascript $(document).ready(function(){ $("#QuickSummary1").click(function(){ $("#wpSummary").val("创建页面");//赋值 }); $("#QuickSummary2").click(function(){ $("#wpSummary").val("修饰语句");//赋值 }); $("#QuickSummary3").click(function(){ $("#wpSummary").val("修正错误");//赋值 }); $("#QuickSummary4").click(function(){ $("#wpSummary").val("内容扩充");//赋值 }); $("#QuickSummary5").click(function(){ $("#wpSummary").val("调整排版");//赋值 }); $("#QuickSummary6").click(function(){ $("#wpSummary").val("调整来源");//赋值 }); $("#QuickSummary7").click(function(){ $("#wpSummary").val("调整内链");//赋值 }); $("#QuickSummary8").click(function(){ $("#wpSummary").val("调整分类");//赋值 }); $("#QuickSummary9").click(function(){ $("#wpSummary").val("维护清理");//赋值 }); }); 226cefbe2b4df116c2c39fa64134648d950017e1 MediaWiki:Summary 8 296 634 2021-08-27T07:32:07Z 13253902 7 新建 wikitext text/x-wiki {{ResourceLoader|Editsummary.js}}摘要: <small style="font-weight:normal;"> (请简要描述您所作出的修改,或选择: <span id="QuickSummary1" title="创建页面">[[#.|创建页面]]</span> | <span id="QuickSummary2" title="修饰语句">[[#.|修饰语句]]</span> | <span id="QuickSummary3" title="修正错误">[[#.|修正错误]]</span> | <span id="QuickSummary4" title="内容扩充">[[#.|内容扩充]]</span> | <span id="QuickSummary5" title="调整排版">[[#.|调整排版]]</span> | <span id="QuickSummary6" title="调整来源">[[#.|调整来源]]</span> | <span id="QuickSummary7" title="调整内链">[[#.|调整内链]]</span> | <span id="QuickSummary8" title="调整分类">[[#.|调整分类]]</span> | <span id="QuickSummary9" title="维护清理">[[#.|维护清理]]</span> ) </small> dd03572c2d3afb514aa4ed004c3ac1528eadaa12 638 634 2021-08-27T13:19:05Z 13253902 7 wikitext text/x-wiki {{ResourceLoader|Editsummary.js}} 摘要:<small style="font-weight:normal;">(请简要描述您所作出的修改,或选择:</small> <span id="QuickSummary1" title="创建页面" class="btn btn-default btn-xs">创建页面</span> <span id="QuickSummary2" title="修饰语句" class="btn btn-default btn-xs">修饰语句</span> <span id="QuickSummary3" title="修正错误" class="btn btn-default btn-xs">修正错误</span> <span id="QuickSummary4" title="内容扩充" class="btn btn-default btn-xs">内容扩充</span> <span id="QuickSummary5" title="调整排版" class="btn btn-default btn-xs">调整排版</span> <span id="QuickSummary6" title="调整来源" class="btn btn-default btn-xs">调整来源</span> <span id="QuickSummary7" title="调整内链" class="btn btn-default btn-xs">调整内链</span> <span id="QuickSummary8" title="调整分类" class="btn btn-default btn-xs">调整分类</span> <span id="QuickSummary9" title="维护清理" class="btn btn-default btn-xs">维护清理</span> <small style="font-weight:normal;">)</small> 010a61d489aa09f61c5fb35bffd6dd22929801ac 模板:ResourceLoader 10 297 635 2021-08-27T07:33:14Z 13253902 7 新建 wikitext text/x-wiki <includeonly><div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div></includeonly><noinclude> 使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。 js脚本仅限于MediaWiki命名空间下的页面。 参数列表: <pre> #1 页面名称或模块名称。 isModule 当值为"true"时,载入js模块或小工具,并忽略后面的参数。 MIME "text/javascript" 或 "text/css" </pre> </noinclude> 48d41516f9a9089bd878ed1c922dd36ac3df85e9 636 635 2021-08-27T12:46:36Z 13253902 7 wikitext text/x-wiki <includeonly><div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div> </includeonly><noinclude> <font color=red>转载自:方舟指令WIKI</font> 使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。 js脚本仅限于MediaWiki命名空间下的页面。 参数列表: <pre> #1 页面名称或模块名称。 isModule 当值为"true"时,载入js模块或小工具,并忽略后面的参数。 MIME "text/javascript" 或 "text/css" </pre> </noinclude><noinclude> [[Category:维护模板]] </noinclude> 573531836eeb2d0f073f1ac45e7466db58974c9a 637 636 2021-08-27T13:16:37Z 13253902 7 wikitext text/x-wiki <includeonly><div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div></includeonly><noinclude> <font color=red>转载自:方舟指令WIKI</font> 使用[//www.mediawiki.org/wiki/ResourceLoader/Core_modules#mw.loader.load mw.loader.load]载入js脚本、css样式表或js模块。 js脚本仅限于MediaWiki命名空间下的页面。 参数列表: <pre> #1 页面名称或模块名称。 isModule 当值为"true"时,载入js模块或小工具,并忽略后面的参数。 MIME "text/javascript" 或 "text/css" </pre> </noinclude><noinclude> [[Category:维护模板]] </noinclude> 909cd2d71215f30b6489c81aa3e25b2a6dac20de 799 637 2021-11-18T08:40:19Z wiki>33961147 0 wikitext text/x-wiki <includeonly>{{#if:{{#varexists:防止多次加载ResourceLoaderJS}}||{{#vardefineecho:防止多次加载ResourceLoaderJS|{{#widget:ResourceLoader}}}}}} <div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div> </includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 7f41181853194aad9f366dd8da9f7bfd4fe0fe16 模板:JS 10 363 797 2021-11-18T10:06:58Z wiki>9388102 0 创建页面,内容为“<includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude>” wikitext text/x-wiki <includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 3cf20dc867db42608a55326ac2374ec4f309d8a7 模板:图片放大 10 361 793 2021-11-25T07:33:47Z wiki>9388102 0 创建页面,内容为“<includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}"> file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{…” wikitext text/x-wiki <includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}"> [[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{{{2|}}}|200px}}|link=|class=showOnImgSource]]<div>{{{默认文字|}}}</div></div> <div class="showOnImg" style="top:0; left:0;">[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|class=showOnImgBox|{{#if:{{{3|}}}|{{{3|}}}|400px}}|link=]]<div class="showOnText" style="width:{{{3|}}}">{{{放大文字|}}}</div></div></div>{{#if: {{#varexists: 图片放大 }} | | {{#vardefine: 图片放大|1}} {{JS|Amplification}}{{#css: .showOnBox{ display:inline-block; margin:5px; } .showOnImg { position: fixed; display:flex; background-color: rgba(0,0,0,0.50); z-index: 1000; overflow: auto; height: 100%; width: 100%; cursor: zoom-out; transition: 0.4s; opacity: 0; visibility: hidden; text-align: center; flex-direction: column; align-items: center; justify-content: center; } .showOnImgSource { cursor: zoom-in; } .showOn{ display: flex; flex-direction: column; align-items: center; } .bui-sns-info{ z-index: 0; } .showOnImgBox { text-align: center; width: auto; max-height: 100%; } .showOnText{ font-size: 16px; font-weight: bold; color: #fff; margin-top: 5px; } }} }}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 3d0c38db646ba507e8444ed6eab4d5734ceb28e7 MediaWiki:Amplification.js 8 362 795 2021-11-25T07:34:27Z wiki>9388102 0 创建页面,内容为“$(".showOn").click(function() { var showElemnet = $(this).next(".showOnImg").clone().appendTo("body"); showElemnet.css({visibility:"visible", opacity: 1})…” javascript text/javascript $(".showOn").click(function() { var showElemnet = $(this).next(".showOnImg").clone().appendTo("body"); showElemnet.css({visibility:"visible", opacity: 1}) .click(function() { $(this).remove(); }) }); e00148868c45fc3d6eb167535733686a2466bfae 帮助:图片放大 12 365 803 2021-11-26T08:26:05Z wiki>9388102 0 /* 使用说明 */ wikitext text/x-wiki {{模板}}__NOTOC__<div class="row"> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> == 简单说明 == {{模板|信息|版本|1.0}} {{模板|信息|说明|点击图片可放大,兼容手机端阅读}} == 使用说明 == ※注意:目前的模板写法不可换行 {{模板|标准| <esc>{{图片放大|图片名称(png格式)|默认大小(可选/默认200px)|放大后大小(可选/默认400px)|默认文字=默认文字(选填)|放大文字=放大文字(选填)}}</esc> }} == 示例 == {{模板|示例| <esc>{{图片放大|Test|200px|800px|默认文字=我是默认文字|放大文字=我是放大文字}}</esc> }} </div> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> == 作者 == {{模板|作者|16083703}} <div class="hidden-xs"> == 标签 == {{模板|信息|标签|模板}} </div> == 依赖页面 == {{模板|依赖 |模板:JS |模板:ResourceLoader |模板:图片放大 |mediawiki:Amplification.js }} == 更新日志 == 1.0 </div> </div> 9599c93aee998c99353d54744b76d47bd3dc7208 文件:辣椒.png 6 298 639 2021-11-29T12:26:28Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:玫瑰.png 6 299 640 2021-11-29T12:26:28Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:棉花.png 6 300 641 2021-11-29T12:26:29Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:茉莉.png 6 301 642 2021-11-29T12:26:29Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:水稻.png 6 302 643 2021-11-29T12:26:29Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:丝绸树.png 6 303 644 2021-11-29T12:26:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:松树.png 6 304 645 2021-11-29T12:26:30Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:土豆.png 6 305 646 2021-11-29T12:26:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:橡胶树.png 6 306 647 2021-11-29T12:26:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:小麦.png 6 307 648 2021-11-29T12:26:31Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:玉米.png 6 308 649 2021-11-29T12:26:32Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:草莓.png 6 309 650 2021-11-29T12:26:32Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:茶树.png 6 310 651 2021-11-29T12:26:32Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:番茄.png 6 311 652 2021-11-29T12:26:33Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:甘蔗.png 6 312 653 2021-11-29T12:26:33Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:胡萝卜.png 6 313 654 2021-11-29T12:26:33Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:花生植物.png 6 314 655 2021-11-29T12:26:34Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:咖啡树.png 6 315 656 2021-11-29T12:26:34Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:可可树.png 6 316 657 2021-11-29T12:26:34Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 Widget:Test1 274 317 658 2021-12-13T14:19:00Z 13253902 7 创建页面,内容为“<includeonly><script> function showData(data) { console.info("Get Into showData"); // json对象转成字符串 var result = JSON.stringify(data); $("#text"…” wikitext text/x-wiki <includeonly><script> function showData(data) { console.info("Get Into showData"); // json对象转成字符串 var result = JSON.stringify(data); $("#text").val(result); } // 调用 $(document).ready(function() { $("#btn").click(function() { $.ajax({ url: "https://tdj-activity.zlongame.com/tdj/data/mQuery.do?id=0&action=info&module=hero&type=detail&query=yuchiliang", type: "GET", dataType: "jsonp", //指定服务器返回的数据类型 jsonpCallback: "showData", // 指定回调函数名称或直接使用回掉函数success jsonp: "callback", // 默认callback success: function(data) { console.info("Get Into success"); // json对象转成字符串 // var result = JSON.stringify(data); // $("#text").val(result); } }); }); }); </script> <input id="btn" type="button" value="跨域请求数据" /> <textarea id="text" style="width: 200px; height: 100px;"> </textarea></includeonly> d02ebcd189b0e20f17ad232a58fb4563b1735a24 模板:作物 10 318 659 2021-12-22T07:18:19Z 13253902 7 创建页面,内容为“{{#set: |中文={{{中文|}}} |金币={{{金币|}}} |售价={{{售价|}}} |经验={{{经验|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时…” wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |售价={{{售价|}}} |经验={{{经验|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! width=25%|所需金币 ! width=25%|成熟时间 ! width=25%|获得经验 ! width=25%|售出价格 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{售价|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 所需金币:{{{金币|}}}<br> 成熟时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> 334e8c879f1c8200cce682e6767d6512b0f30b9d 681 659 2021-12-22T12:36:39Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |售价={{{售价|}}} |经验={{{经验|}}} |时间(天)={{{时间(天)|}}} |时间(时)={{{时间(时)|}}} |时间(分)={{{时间(分)|}}} |时间(秒)={{{时间(秒)|}}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> {| class="wikitable" style="text-align: center;width:100%" ! width=25%|所需金币 ! width=25%|成熟时间 ! width=25%|获得经验 ! width=25%|售出价格 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{售价|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 解锁等级:{{{等级|}}}<br> 所需金币:{{{金币|}}}<br> 成熟时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:作物]]</includeonly> 822f125960857ae080f6ac98d5c72e772fac8bc1 批量 0 319 660 2021-12-22T12:30:07Z 13253902 7 创建页面,内容为“搬运自:[https://wiki.biligame.com/wiki/用户:33961147/tool 奇迹暖暖点点大佬处工具集] 批量刷新 [https://wiki.biligame.com/jiangnan/Widget:刷…” wikitext text/x-wiki 搬运自:[https://wiki.biligame.com/wiki/用户:33961147/tool 奇迹暖暖点点大佬处工具集] 批量刷新 [https://wiki.biligame.com/jiangnan/Widget:刷新 widget:刷新] 批量写页面(调用模板页面) [https://wiki.biligame.com/jiangnan/Widget:pagefill widget:pagefill] 批量更新页面(基于form) [https://wiki.biligame.com/jiangnan/Widget:pageupdate widget:pageupdate] 批量增删分类 [https://wiki.biligame.com/jiangnan/Widget:分类 widget:分类] 批量追加内容 [https://wiki.biligame.com/jiangnan/Widget:分类 widget:分类] 批量删除页面 [https://wiki.biligame.com/jiangnan/Widget:删除 widget:删除] 2b8034a9f4f18f5d339004839551f2f9947893d0 Widget:Pagefill 274 320 661 2021-12-22T12:30:33Z 13253902 7 创建页面,内容为“<includeonly><div id="BatchCreateByTemplate"> <textarea id="BCBTexcel" style="width:100%;height:300px"></textarea> <div id="BCBTdisplay" class="row"></div> <button i…” wikitext text/x-wiki <includeonly><div id="BatchCreateByTemplate"> <textarea id="BCBTexcel" style="width:100%;height:300px"></textarea> <div id="BCBTdisplay" class="row"></div> <button id="BCBTsubmit" style="padding:0.5em 1em">确认创建</button> <script> BCBTMeta={ "template":"", "key":[], "page":{}, "state":"ready", "titles": [], "index":0 } BCBTFun={ "initialize":function(){ if(mw.config.get('wgUserGroups').indexOf("sysop")==-1){ //document.getElementById("BatchCreateByTemplate").innerHTML="你无权使用这个功能。" //return } document.getElementById("BCBTexcel").oninput=function(){ let row=this.value.split("\n") let title=row[0].split("\t") title=title.map(function(e){return e.trim()}) BCBTMeta.template=title[0] BCBTMeta.key=[] BCBTMeta.page={} for(let i=1,ilen=title.length;i<ilen;i++){ BCBTMeta.key.push(title[i]) } for(let i=1,ilen=row.length;i<ilen;i++){ let cell=row[i].split("\t") cell=cell.map(function(e){return e.trim()}) if(cell[0]){ BCBTMeta.page[cell[0]]=[] for(let j=1,jlen=title.length;j<jlen;j++){ BCBTMeta.page[cell[0]].push(cell[j]||"") } } } let BCBTdisplay=document.getElementById("BCBTdisplay") BCBTdisplay.innerHTML=""; for(let key in BCBTMeta.page){ let text="[[<a href="+mw.config.values.wgScriptPath+"/"+encodeURIComponent(key)+" title="+key+" target=_blank>"+key+"</a>]]" text+="\n\n{{"+(BCBTMeta.template?"<a href="+mw.config.values.wgScriptPath+"/"+encodeURIComponent("模板:"+BCBTMeta.template)+" title="+"模板:"+BCBTMeta.template+" target=_blank>"+BCBTMeta.template+"</a>":"<span style='color:red'>请确认模板</span>") for(let i=0,ilen=BCBTMeta.key.length;i<ilen;i++){ text+="\n|"+(BCBTMeta.key[i]?BCBTMeta.key[i]+"=":"")+BCBTMeta.page[key][i] } text+="\n}}" let pre=document.createElement("pre") pre.classList.add("col-md-3") pre.dataset.title=key pre.innerHTML=text BCBTdisplay.appendChild(pre) } } document.getElementById("BCBTsubmit").onclick=function(){ if(BCBTMeta.state=="ready"&&confirm("真的确认了吗?")){ document.getElementById("BCBTexcel").readOnly=true BCBTMeta.state="busy"; BCBTMeta.titles = Object.keys(BCBTMeta.page) create(); } } }, } function create() { var title = BCBTMeta.titles[BCBTMeta.index++] if(!title) return false; let text="{"+"{"+BCBTMeta.template for(let i=0,ilen=BCBTMeta.key.length;i<ilen;i++){ text+="\n|"+(BCBTMeta.key[i]?BCBTMeta.key[i]+"=":"")+BCBTMeta.page[title][i] } text+="\n}}" new mw.Api().postWithToken( 'csrf', { action: 'edit', title: title, text: text }).then(function (json) { let title = json.edit.title $.get(mw.config.get("wgCookiePath") + title) document.querySelector("#BCBTdisplay pre[data-title=\""+title+"\"]").classList.add("created") return setTimeout(create, 500) }).catch(function (e) { console.log(e) }); } window.addEventListener("load",function(){ BCBTFun.initialize() }) function getApi(url,callback=false,callbackE=false){ let ajax=new XMLHttpRequest() if(!callback){ ajax.open("GET",url,false) ajax.send() let json=JSON.parse(ajax.responseText) return json } ajax.open("GET",url) ajax.send() ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ callback(ajax.responseText) } else if(ajax.status==404&&callbackE){ callbackE(true) } } } } function postFdApi(url,fd,callback=false,callbackE=false){ let ajax=new XMLHttpRequest() if(!callback){ ajax.open("POST",url,false) ajax.send(fd) let json=JSON.parse(ajax.responseText) return json } ajax.open("POST",url) ajax.send(fd) ajax.onreadystatechange=function(){ if(ajax.readyState==4){ if(ajax.status==200){ callback(ajax.responseText) } else if(ajax.status==404&&callbackE){ callbackE(true) } } } } </script> <style> .created{ background:#5CB85C; } </style> </div> </includeonly><noinclude> 搬运自:https://wiki.biligame.com/qjnn/Widget:Pagefill<br> <b><big>不能熟练使用模板的同学请不要使用此方法</big></b> 批量创建页面,在Excel里建表格复制进来 {|class="wikitable |模板名||参数1名||参数2名||…… |- |页面1名||参数1||参数2||…… |- |页面2名||参数1||参数2||…… |- |colspan=4|…… |} {{#widget:pagefill}} 如页面已创建,请尝试使用[[讨论:批量添加页面内容]] </noinclude> 362913bd3234a8ddfa9546f49a45e5cab59e155b 小麦 0 321 662 2021-12-22T12:30:53Z 13253902 7 创建页面,内容为“{{作物 |中文=小麦 |金币=0 |售价=1 |经验=1 |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=小麦 |金币=0 |售价=1 |经验=1 |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }} d27f8226b045bfd9ee9ae830850eaab88625b353 玉米 0 322 663 2021-12-22T12:31:45Z 13253902 7 创建页面,内容为“{{作物 |中文=玉米 |金币=1 |售价=3 |经验=1 |时间(天)= |时间(时)= |时间(分)=5 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=玉米 |金币=1 |售价=3 |经验=1 |时间(天)= |时间(时)= |时间(分)=5 |时间(秒)= }} 96acb533f9d1cb366ce7214a637cd72b16158203 胡萝卜 0 323 664 2021-12-22T12:31:46Z 13253902 7 创建页面,内容为“{{作物 |中文=胡萝卜 |金币=2 |售价=5 |经验=2 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=胡萝卜 |金币=2 |售价=5 |经验=2 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= }} 350d507d065b29ad7c5f31a9bf80d2ce180fc46a 甘蔗 0 324 665 2021-12-22T12:31:46Z 13253902 7 创建页面,内容为“{{作物 |中文=甘蔗 |金币=3 |售价=7 |经验=3 |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=甘蔗 |金币=3 |售价=7 |经验=3 |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= }} b4c2fd6e6c9d08c08569da121035078204dd75ec 棉花 0 325 666 2021-12-22T12:31:47Z 13253902 7 创建页面,内容为“{{作物 |中文=棉花 |金币=4 |售价=9 |经验=4 |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=棉花 |金币=4 |售价=9 |经验=4 |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= }} fd5fbd3fcc8eb7ab062972ae1b7ed58e13b3137a 草莓 0 326 667 2021-12-22T12:31:48Z 13253902 7 创建页面,内容为“{{作物 |中文=草莓 |金币=5 |售价=11 |经验=6 |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=草莓 |金币=5 |售价=11 |经验=6 |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= }} db4200a26dc0e436a001da23b5ae735bba7b9e92 番茄 0 327 668 2021-12-22T12:31:49Z 13253902 7 创建页面,内容为“{{作物 |中文=西红柿 |金币=6 |售价=13 |经验=6 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=西红柿 |金币=6 |售价=13 |经验=6 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }} 79c6b8023cefabb8418a48861c8c0cafed0033f5 686 668 2021-12-22T12:51:20Z 13253902 7 13253902移动页面[[西红柿]]至[[番茄]],不留重定向 wikitext text/x-wiki {{作物 |中文=西红柿 |金币=6 |售价=13 |经验=6 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }} 79c6b8023cefabb8418a48861c8c0cafed0033f5 687 686 2021-12-22T12:51:29Z 13253902 7 wikitext text/x-wiki {{作物 |中文=番茄 |金币=6 |售价=13 |经验=6 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= }} 2245e72104bcdb3b9c618270086cfcf2dc22b890 松树 0 328 669 2021-12-22T12:31:50Z 13253902 7 创建页面,内容为“{{作物 |中文=松树 |金币=7 |售价=15 |经验=7 |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=松树 |金币=7 |售价=15 |经验=7 |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= }} 0a8fdde7c68466720536993fe382a87b64d2e00a 土豆 0 329 670 2021-12-22T12:31:51Z 13253902 7 创建页面,内容为“{{作物 |中文=土豆 |金币=8 |售价=17 |经验=8 |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=土豆 |金币=8 |售价=17 |经验=8 |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= }} 30228a7856dbacd4615abd0dc46e8ecd279721db 可可树 0 330 671 2021-12-22T12:31:52Z 13253902 7 创建页面,内容为“{{作物 |中文=可可树 |金币=9 |售价=19 |经验=19 |时间(天)= |时间(时)=8 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=可可树 |金币=9 |售价=19 |经验=19 |时间(天)= |时间(时)=8 |时间(分)= |时间(秒)= }} a1c72ab13c6407c0e1ab83dd847990e096eec089 橡胶树 0 331 672 2021-12-22T12:31:53Z 13253902 7 创建页面,内容为“{{作物 |中文=橡胶树 |金币=15 |售价=29 |经验=24 |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=橡胶树 |金币=15 |售价=29 |经验=24 |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= }} 68f533c6ca70fcf1e26af247036c9a21ad3d49a7 丝绸树 0 332 673 2021-12-22T12:31:54Z 13253902 7 创建页面,内容为“{{作物 |中文=丝绸树 |金币=20 |售价=33 |经验=27 |时间(天)= |时间(时)=15 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=丝绸树 |金币=20 |售价=33 |经验=27 |时间(天)= |时间(时)=15 |时间(分)= |时间(秒)= }} de5bfc3f84354bb4eda988165733c43abfbc1892 辣椒 0 333 674 2021-12-22T12:31:55Z 13253902 7 创建页面,内容为“{{作物 |中文=辣椒 |金币=11 |售价=20 |经验=9 |时间(天)= |时间(时)=5 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=辣椒 |金币=11 |售价=20 |经验=9 |时间(天)= |时间(时)=5 |时间(分)= |时间(秒)= }} e6c7618b11af4664dfcc54697809e74988d3b90a 水稻 0 334 675 2021-12-22T12:31:56Z 13253902 7 创建页面,内容为“{{作物 |中文=水稻 |金币=7 |售价=14 |经验=5 |时间(天)= |时间(时)=1 |时间(分)=20 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=水稻 |金币=7 |售价=14 |经验=5 |时间(天)= |时间(时)=1 |时间(分)=20 |时间(秒)= }} 30280fec7ecab5876750169873026436beb752af 玫瑰 0 335 676 2021-12-22T12:31:57Z 13253902 7 创建页面,内容为“{{作物 |中文=玫瑰 |金币=18 |售价=28 |经验=10 |时间(天)= |时间(时)=2 |时间(分)=30 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=玫瑰 |金币=18 |售价=28 |经验=10 |时间(天)= |时间(时)=2 |时间(分)=30 |时间(秒)= }} 53863963b5a784414243c39a3f731638ba445fea 茉莉 0 336 677 2021-12-22T12:31:58Z 13253902 7 创建页面,内容为“{{作物 |中文=茉莉 |金币=25 |售价=37 |经验=12 |时间(天)= |时间(时)=3 |时间(分)=30 |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=茉莉 |金币=25 |售价=37 |经验=12 |时间(天)= |时间(时)=3 |时间(分)=30 |时间(秒)= }} 3d20a8f3485e4c6a47d073fcf3bbd8a1432b539b 咖啡树 0 337 678 2021-12-22T12:31:59Z 13253902 7 创建页面,内容为“{{作物 |中文=咖啡 |金币=33 |售价=48 |经验=16 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=咖啡 |金币=33 |售价=48 |经验=16 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }} 5285561840864b23710c8ddd1bc30062236f1b2a 684 678 2021-12-22T12:50:22Z 13253902 7 13253902移动页面[[咖啡]]至[[咖啡树]],不留重定向 wikitext text/x-wiki {{作物 |中文=咖啡 |金币=33 |售价=48 |经验=16 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }} 5285561840864b23710c8ddd1bc30062236f1b2a 685 684 2021-12-22T12:50:33Z 13253902 7 wikitext text/x-wiki {{作物 |中文=咖啡树 |金币=33 |售价=48 |经验=16 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= }} 8f8197258c36cc29072beb777e59f9e8ee52b490 花生植物 0 338 679 2021-12-22T12:32:00Z 13253902 7 创建页面,内容为“{{作物 |中文=花生植物 |金币=35 |售价=53 |经验=10 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=花生植物 |金币=35 |售价=53 |经验=10 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= }} 3367191cbe8931d8cca0147b3287c919c78a26a6 茶树 0 339 680 2021-12-22T12:32:01Z 13253902 7 创建页面,内容为“{{作物 |中文=茶树 |金币=37 |售价=61 |经验=21 |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= }}” wikitext text/x-wiki {{作物 |中文=茶树 |金币=37 |售价=61 |经验=21 |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= }} a6412490afdff1961bad4535ff62d02f8f72cb65 模板:作物表 10 340 682 2021-12-22T12:41:15Z 13253902 7 创建页面,内容为“<noinclude> {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:分类:作…” wikitext text/x-wiki <noinclude> {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:[[分类:作物]] |?中文 |?金币 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |link=none |sort=金币 |order=asc |headers=hide |template=作物表 |format=template |limit=1000 }} |} </noinclude><includeonly>|- |[[文件:{{{2|}}}.png|80px|class=img-kk|link={{{2|}}}]]<br>[[{{{2|}}}]] | style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{3|}}} | style="font-size:2vw;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{4|}}} | style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{5|}}}|{{{5|}}}天}}{{#if:{{{6|}}}|{{{6|}}}时}}{{#if:{{{7|}}}|{{{7|}}}分}}{{#if:{{{8|}}}|{{{8|}}}秒}} </includeonly> 17f164e6805b65fc3f6028535046ec2bfa620776 作物 0 341 683 2021-12-22T12:41:52Z 13253902 7 创建页面,内容为“{{面包屑}} {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:分类:作…” wikitext text/x-wiki {{面包屑}} {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 作物 ! 所需金币 ! 获得经验 ! 成熟时间 {{#ask:[[分类:作物]] |?中文 |?金币 |?经验 |?时间(天) |?时间(时) |?时间(分) |?时间(秒) |link=none |sort=金币 |order=asc |headers=hide |template=作物表 |format=template |limit=1000 }} |} 757d4467a9db63801d0526385307fbc3698a53e3 MediaWiki:Sidebar 8 14 688 19 2021-12-22T12:53:30Z 13253902 7 wikitext text/x-wiki * 首页 ** 首页|梦想小镇WIKI首页 ** recentchanges-url|recentchanges ** randompage-url|randompage ** https://wiki.biligame.com/wiki/%E9%A6%96%E9%A1%B5|BWIKI首页 * 建造 ** 房屋|房屋 ** 社区建筑|社区建筑 ** 工厂|工厂 ** 动物园|动物园 ** 装饰物|装饰物 ** 特殊|特殊 * 物品 ** 作物|作物 ** 产品|产品 * 统计 ** 工厂升级金属表|工厂升级金属表 ** 扩地所需材料表|扩地所需材料表 * 其他 ** 常用编辑|常用编辑 eb87fa157552dc64972ded7039f89d09ad0aa673 测试 0 286 689 561 2022-01-01T06:39:10Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> {{#set: |开始日期=20220101 }} ce9a75642c7e699877e5f909e294180d2639878e 属性:开始日期 102 342 690 2022-01-01T06:39:57Z 13253902 7 创建页面,内容为“[[Has type::Date]]” wikitext text/x-wiki [[Has type::Date]] 8a74b186b0e70da40f6a9a21198f77c0a08ebe2e 工厂 0 343 691 2022-01-24T02:51:06Z 1793443439 317 创建页面,内容为“123” wikitext text/x-wiki 123 40bd001563085fc35165329ea1ff5c5ecbdbbeef 692 691 2022-01-24T02:51:46Z 1793443439 317 清空页面 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Widget:Test 274 285 693 564 2022-03-12T07:23:40Z 13253902 7 wikitext text/x-wiki <includeonly> {{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }} <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = {{#arrayprint:Housename}}; document.write(Housename + "<br>"); </script> </includeonly> a495bbb65745de2242b9491405cf5ee504df0151 694 693 2022-03-12T07:24:22Z 13253902 7 wikitext text/x-wiki {{#arraydefine: Housename | {{#ask:[[分类:房屋]]|link=none}} | | }} <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = {{#arrayprint:Housename}}; document.write(Housename + "<br>"); </script> 16235dbbb64cebc8d4aee52c7b39ec3e8dc1df3e 695 694 2022-03-12T07:29:58Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = <!--{$Housename}-->; document.write(Housename + "<br>"); </script> dd8d5b9c05c9ffcc5df25d26496f7f52facd792b 696 695 2022-03-12T07:31:51Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = '<!--{$Housename}-->'; document.write(Housename + "<br>"); </script> cd42589fb39b16eb93eee0bba329e7fffa63b9a8 697 696 2022-03-12T07:32:10Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); let Housename = 'XXX'; document.write(Housename + "<br>"); </script> 1ca0f32a5635e9d42f94b04b5139dc99e7a1e252 698 697 2022-03-12T07:33:38Z 13253902 7 wikitext text/x-wiki <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $("a").click(function(){ $("#bad").load("/township/Test" #good); }); }); var xyz=["小屋","小麦","小屁孩"]; document.write(xyz[1] + "<br>"); </script> c2a41e47eb2afb247a6e934712155dd389e8fc32 699 698 2022-03-12T07:35:24Z 13253902 7 wikitext text/x-wiki <script> var xyz=["小屋","小麦","小屁孩"]; document.write(xyz[1] + "<br>"); </script> 16493f4457871e0045ad1684f810c125f8b149a1 700 699 2022-03-12T07:38:59Z 13253902 7 wikitext text/x-wiki <script> var xyz = <!--{$xyz}-->; document.write(xyz + "<br>"); </script> d82b90fba31697fcdf26e49f19f1196d944c343b 701 700 2022-03-12T07:42:36Z 13253902 7 wikitext text/x-wiki <script> var xyz = <!--{$xyz}-->; document.write(xyz[1] + "<br>"); </script> 55f9115841b7741769336027f29344c267342ff9 smw/schema:Group:Schema properties 112 344 702 2022-03-14T16:25:32Z System 361 Semantic MediaWiki group import smw/schema application/json { "type": "PROPERTY_GROUP_SCHEMA", "groups": { "schema_group": { "canonical_name": "Schema properties", "message_key": "smw-property-group-label-schema-group", "property_keys": [ "_SCHEMA_TYPE", "_SCHEMA_DEF", "_SCHEMA_DESC", "_SCHEMA_TAG", "_SCHEMA_LINK", "_FORMAT_SCHEMA", "_CONSTRAINT_SCHEMA", "_PROFILE_SCHEMA" ] } }, "tags": [ "group", "property group" ] } fdba38d9db40d0248af036f81b4b7fdb74f6170d smw/schema:Group:Predefined properties 112 345 703 2022-03-14T16:25:32Z System 361 Semantic MediaWiki group import smw/schema application/json { "type": "PROPERTY_GROUP_SCHEMA", "groups": { "administrative_group": { "canonical_name": "Adminstrative properties", "message_key": "smw-property-group-label-administrative-properties", "property_keys": [ "_MDAT", "_CDAT", "_NEWP", "_LEDT", "_DTITLE", "_CHGPRO", "_EDIP", "_ERRC" ] }, "classification_group": { "canonical_name": "Classification properties", "message_key": "smw-property-group-label-classification-properties", "property_keys": [ "_INST", "_PPGR", "_SUBP", "_SUBC" ] }, "content_group": { "canonical_name": "Content properties", "message_key": "smw-property-group-label-content-properties", "property_keys": [ "_SOBJ", "_ASK", "_MEDIA", "_MIME", "_ATTCH_LINK", "_FILE_ATTCH", "_CONT_TYPE", "_CONT_AUTHOR", "_CONT_LEN", "_CONT_LANG", "_CONT_TITLE", "_CONT_DATE", "_CONT_KEYW", "_TRANS", "_TRANS_SOURCE", "_TRANS_GROUP" ] }, "declarative_group": { "canonical_name": "Declarative properties", "message_key": "smw-property-group-label-declarative-properties", "property_keys": [ "_TYPE", "_UNIT", "_IMPO", "_CONV", "_SERV", "_PVAL", "_LIST", "_PREC", "_PDESC", "_PPLB", "_PVAP", "_PVALI", "_PVUC", "_PEID", "_PEFU" ] } }, "tags": [ "group", "property group" ] } 8536eb8767d6dc5a87a0b4f7791b9cd791acbd75 测试 0 286 704 689 2022-05-13T11:11:31Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> {{#set: |开始日期=20220101 }} {{#set: |测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ }} 6b759eaba2663f8c29a5f2a576960dfa188bc5c2 709 704 2022-05-13T11:44:56Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> {{#set: |开始日期=20220101 }} {{#set: |测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ }} d2ac7fef188c59e46c4b8e741b7c7d256720ca6a 711 709 2022-05-20T04:35:19Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> {{#set: |开始日期=20220101 }} {{#set: |测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ }} {{#Widget:测试}} df8f69dafb6c1d5b2563f1ef41d26a46a5c1ae98 718 711 2022-05-20T07:16:31Z 13253902 7 wikitext text/x-wiki {{#widget:Test}} <div id="bad"><h2>使用 jQuery AJAX 修改文本内容</h2></div> <a>获取内容</a> {{#set: |开始日期=20220101 }} {{#set: |测试属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |页面型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ |文本型属性=测试属性<font color=red>测</font>试属[[性]]测试<>=\]/ }} <div class="tooltips">弹窗</div> {{#Widget:测试}} 52b34c2d9b0c129a70b58aadf93f94cd98352f53 753 718 2022-05-21T15:24:12Z 1381806 391 wikitext text/x-wiki <div class="bili-tt" data-type="@测试" data-name="1|2|42">tts</div> b268bf93ff005a6243f9b2530b69f54a627929c9 属性:测试属性 102 346 705 2022-05-13T11:13:46Z 13253902 7 已创建类型页面型的属性 wikitext text/x-wiki 这是类型为[[具有类型::页面型]]的属性。 6d5b652dac9e361f52d578d4bb3e4a81c245050c 706 705 2022-05-13T11:39:06Z 13253902 7 清空全部内容 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 属性:页面型属性 102 347 707 2022-05-13T11:43:42Z 13253902 7 已创建类型页面型的属性 wikitext text/x-wiki 这是类型为[[具有类型::页面型]]的属性。 6d5b652dac9e361f52d578d4bb3e4a81c245050c 属性:文本型属性 102 348 708 2022-05-13T11:44:04Z 13253902 7 已创建类型文本型的属性 wikitext text/x-wiki 这是类型为[[具有类型::文本型]]的属性。 8d6761d8faf9d54ecd13d1fc894091df46d2cd04 Widget:测试 274 290 710 625 2022-05-20T04:34:52Z 13253902 7 创建页面 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <button id="myButton" data-tippy-content="Another T<br>ooltip">My button</button> <style> .tippy-box{background-color:transparent; </style> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('#myButton',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', }); </script> 0033cb7aabe60d55af7ba95fe9b20dfc5caed9c6 713 710 2022-05-20T04:40:04Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <button id="myButton" data-tippy-content="{{测试|11|33|22}}">My button</button> <style> .tippy-box{background-color:transparent; </style> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('#myButton',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', }); </script> 32e5ff8f1779204b4c2de57cb82dcd14cc1b745a 714 713 2022-05-20T05:18:05Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <style> .tippy-box{background-color:transparent; </style> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('.tooltip',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', }); </script> f6936d6c29d03a853d2ab2975ebf373da8a89653 715 714 2022-05-20T05:21:00Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <style> .tippy-box{background-color:transparent; </style> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', }); </script> 2e99f5d9cf28246a04d71eb1daa065f70c40b44a 716 715 2022-05-20T06:01:21Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, onShow(instance) { return $.get('/yanyu/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "小麦", // 待解析文本 }).then(function(result){ if (result && result.parse && result.parse.text){ $div.html(result.parse.text['*']); } else{ throw result; } })['catch'](function(error){ // 辣鸡解析器,不让我直接.catch if(again){ $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else{ $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); }, });</script> b4fbe55bdf815dccb6f40254f7b050c3a63e9102 717 716 2022-05-20T07:16:05Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, onShow(instance) { return $.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "小麦", // 待解析文本 }).then(function(result){ if (result && result.parse && result.parse.text){ $div.html(result.parse.text['*']); } else{ throw result; } })['catch'](function(error){ // 辣鸡解析器,不让我直接.catch if(again){ $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else{ $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); }, });</script> 3e34babb8896aeaff596ed3994d9be6e326e186a 721 717 2022-05-21T04:59:10Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, function(tooltips_data,status){ return(tooltips_data.parse.text['*']); } );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_data, }); </script> cd5118a7fd245ad5e6f87b8b7f278ba4274275db 722 721 2022-05-21T05:02:30Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, function(tooltips_result,status){ return(tooltips_result.parse.text['*']); } );; var tooltips_wikitext=tooltips_wikitext.parse.text['*']; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_wikitext, }); </script> 07f60f75aede92f928087c47c05459d692543c08 723 722 2022-05-21T05:06:42Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, function(tooltips_data,status){ return(tooltips_data.parse.text['*']); } );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_data.parse.text['*'], }); </script> cd531382c0c7f20858d72a97a49fe6de5fd4fe75 724 723 2022-05-21T05:08:17Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, function(tooltips_data,status){ return(tooltips_data.parse.text['*']); } );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: JSON.parse(tooltips_data.parse.text['*']), }); </script> 3c14da4cfa6022e3c63fbecc41097866baba5616 725 724 2022-05-21T05:09:24Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, function(tooltips_data,status){ return(tooltips_data.parse.text['*']); } );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_data, }); </script> cd5118a7fd245ad5e6f87b8b7f278ba4274275db 726 725 2022-05-21T05:13:00Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_data, }); </script> 767d392d19c65803bd88c504d8691293cd2591a3 727 726 2022-05-21T05:15:32Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; var tooltips_result = tooltips_data.parse.text['*']; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_result, }); </script> fe36820f5c67b31395e9925e2a0352eda7cd45ad 728 727 2022-05-21T05:22:24Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; var tooltips_result = html(tooltips_data.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_result, }); </script> ceadb19d5ec91689d5c70cd520cb2df4e46e8a9c 729 728 2022-05-21T05:31:08Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; var tooltips_result = tooltips_data.parse.text['*']; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_result, }); </script> fe36820f5c67b31395e9925e2a0352eda7cd45ad 730 729 2022-05-21T05:48:17Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; var tooltips_result = JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: tooltips_result, }); </script> 7463c21c50e12a4ee67d435f71e3292b53c67083 731 730 2022-05-21T05:51:53Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: JSON.stringify(tooltips_data.responseJSON.parse.text['*']), }); </script> b1245065a077edbd542cb4bb47afb3496dd06db5 732 731 2022-05-21T06:02:04Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:JSON.stringify(tooltips_data.responseJSON.parse.text['*']), }); </script> db346c957e269cec26fac9129c3656dad0a9cd84 733 732 2022-05-21T06:02:54Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, );; var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> 019ce76c8a3a697b1143bfba7a31ddbbd71522f0 734 733 2022-05-21T06:14:44Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, ); var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> 9ebcb7a7a0ac34e4beaac8bf1477093e718c7dd2 735 734 2022-05-21T06:17:21Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> // With the above scripts loaded, you can call `tippy()` with a CSS // selector and a `content` prop: var x =JSON.stringify(tooltips_data.responseJSON.parse.text['*']); var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }, ); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> fdd99ef3d4c108a2124b033e49333103184c7b76 736 735 2022-05-21T06:18:21Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:JSON.stringify(tooltips_data.responseJSON.parse.text['*']), }); </script> 3ca6fd134c6f0ad150bff92157db27013d31d9ae 737 736 2022-05-21T06:19:19Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x), }); </script> 2751b43c2ceb26ee4cef62f878694028b44adce5 738 737 2022-05-21T06:22:32Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x), }); </script> f0a6304e3d28eee932b5575fbe17ebeb049ca2d4 739 738 2022-05-21T06:25:03Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> cd4480fd68e84649cff6ca6de93bc8e8bd363f1e 740 739 2022-05-21T06:32:02Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=225; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> e26a477b2e4a04ff1d3ec1ab17f3dc5c8ae15cd3 741 740 2022-05-21T06:34:23Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=JSON.parse($.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 })); var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> 5fbf42086f2de4f4637b0e6524f2bb3e80163e34 742 741 2022-05-21T06:35:14Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=JSON.stringify(tooltips_data.responseJSON.parse.text['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> cd4480fd68e84649cff6ca6de93bc8e8bd363f1e 743 742 2022-05-21T07:41:27Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=2333); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> a36c216d6c1499d6bd36329d142892b7653852d4 744 743 2022-05-21T07:41:34Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x=2333; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> 828c15bce855f432d9c6048bd55c347ad7e053cb 745 744 2022-05-21T07:42:18Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x= "2333"; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> dd631c1e622af916e3e76eb798afd4230cee60de 746 745 2022-05-21T07:44:27Z 13253902 7 wikitext text/x-wiki <style> .tippy-box[data-theme~=light] { color: #26323d; box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15); background-color: #fff } .tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before { border-top-color: #fff } .tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before { border-bottom-color: #fff } .tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before { border-left-color: #fff } .tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before { border-right-color: #fff } .tippy-box[data-theme~=light]>.tippy-backdrop { background-color: #fff } .tippy-box[data-theme~=light]>.tippy-svg-arrow { fill: #fff } </style> <script>/** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map </script> <script> !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map </script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x= "2333"; tippy('.tooltips', { theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: '这是弹窗内容', }); </script> c33bd506211e30eadc72777ed3e4c422b11041b1 747 746 2022-05-21T07:45:14Z 13253902 7 wikitext text/x-wiki <style> .tippy-box[data-theme~=light] { color: #26323d; box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15); background-color: #fff } .tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before { border-top-color: #fff } .tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before { border-bottom-color: #fff } .tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before { border-left-color: #fff } .tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before { border-right-color: #fff } .tippy-box[data-theme~=light]>.tippy-backdrop { background-color: #fff } .tippy-box[data-theme~=light]>.tippy-svg-arrow { fill: #fff } </style> <script> !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map </script> <script> !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map </script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x= "2333"; tippy('.tooltips', { theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content: '这是弹窗内容', }); </script> fc1314513542248f091d2ea1998e14076834848f 748 747 2022-05-21T07:46:19Z 13253902 7 页面内容被替换为“<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext"…” wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }); var x= "2333"; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:x, }); </script> dd631c1e622af916e3e76eb798afd4230cee60de 749 748 2022-05-21T07:56:09Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> var tooltips_data=$.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }).done(data=>tooltips_data=data['parse']['text']['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:tooltips_data, }); </script> 2320e72075b453522ee188ad10b5cfba63c0fd8e 750 749 2022-05-21T08:00:45Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> $.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }).done(data=>tooltips_data=data['parse']['text']['*']); tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:tooltips_data, }); </script> 65455ca2ec2c2b44cd482ed39f85ccdf7a562670 751 750 2022-05-21T08:08:54Z 13253902 7 wikitext text/x-wiki <link rel="stylesheet" href="https://unpkg.com/tippy.js@6/themes/light.css"/> <script src="https://unpkg.com/@popperjs/core@2"></script> <script src="https://unpkg.com/tippy.js@6"></script> <script> $.get('/township/api.php',{ action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 text: "{{测试|11|22|33}}", // 待解析文本 }).done(data=>{tooltips_data=data['parse']['text']['*']; tippy('.tooltips',{ theme: 'light', allowHTML: true, arrow: false, followCursor: true, interactive: true, trigger: "click", hideOnClick: 'toggle', content:tooltips_data, });}); </script> 1a9e1b2ff820ab9e0819b5c25de92dafeb331908 模板:测试 10 349 712 2022-05-20T04:39:36Z 13253902 7 创建页面,内容为“<noinclude>{{测试|11|22|33}}</noinclude><includeonly>{{{1|}}}<b>{{{2|}}}</b><font color=red>{{{3|}}}</font></includeonly>” wikitext text/x-wiki <noinclude>{{测试|11|22|33}}</noinclude><includeonly>{{{1|}}}<b>{{{2|}}}</b><font color=red>{{{3|}}}</font></includeonly> 8ca87dbe3a07dba8e392c23030ed0e9ae6a19025 杂货铺 0 35 719 320 2022-05-20T16:38:01Z 291349077 390 wikitext text/x-wiki {{社区建筑 |中文=杂货铺 |等级=12222 |金币=25 |人口=15 |经验=30 |现金=1 |占地=2×2 |玻璃= |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }} becc4760c18342614ec223d298386918469339ad 720 719 2022-05-21T02:03:03Z 13253902 7 已还原[[Special:Contributions/291349077|291349077]]([[User talk:291349077|讨论]])的编辑至最后由[[User:13253902|13253902]]修订的版本 wikitext text/x-wiki {{社区建筑 |中文=杂货铺 |等级=5 |金币=25 |人口=15 |经验=30 |现金=1 |占地=2×2 |玻璃= |砖块=1 |混凝土路面= |钻头= |电锯= |电钻= |时间(天)= |时间(时)= |时间(分)=2 |时间(秒)= }} 81faef2b8f9d106fc55ee3470c9f8a768dddc003 MediaWiki:Gadget-tippy.js 8 350 752 2022-05-21T15:20:34Z 1381806 391 测试 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(() => { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: 'toggle', onShow(instance) { get_div(link, instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, (div) => instance.setContent(div)); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ 0c0dc86154ac60e00246f989ccd2c3b277377351 测试 0 286 754 753 2022-05-21T15:25:15Z 1381806 391 wikitext text/x-wiki <div class="bili-tippy" data-type="@测试" data-name="1|2|42">tts</div> f9c0e58f175f08d22f9af2a2c874a3075dbf15d7 760 754 2022-05-21T18:24:29Z 1381806 391 wikitext text/x-wiki <div class="bili-tippy" data-type="@测试" data-name="1|2|42">tts</div> {{测试|1|2|42}} {{#css: .tippy-box[data-theme~=light] { color: #26323d; box-shadow: 0 0 20px 4px rgba(154, 161, 177, .15), 0 4px 80px -8px rgba(36, 40, 47, .25), 0 4px 4px -2px rgba(91, 94, 105, .15); background-color: #fff } }} 8a7442ef7a3bd5dda4523a4f0cc08b29720ebd08 MediaWiki:Gadgets-definition 8 56 755 576 2022-05-21T15:34:20Z 1381806 391 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js * Tippy [ResourceLoader|default] | Tippy.js 4e6c888c8dae1ef9a26d61beb3acc4a7b87322a8 756 755 2022-05-21T15:35:11Z 1381806 391 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js * Tippy [ResourceLoader|default] | tippy.js dc9c7e4bc1f04616be3c83bc6ed9c0da912d1a1f 757 756 2022-05-21T15:40:45Z 1381806 391 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js * tippy [ResourceLoader|default] | tippy.js 23e33f6d30d09912405258abc4c22049c09119e7 761 757 2022-05-21T18:25:15Z 1381806 391 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js * tippy[ResourceLoader|default]|tippy.js af865f241dad8cfc25218d9129ee9d7d86fe2d26 770 761 2022-05-22T05:38:01Z 1381806 391 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> d79ac37f817069ec3382288e02d6062f78af1830 786 770 2023-04-22T07:13:05Z 13253902 7 内容扩充 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js * Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> 344fb36ccae2c4abd53b96d1d511e641728509a7 791 786 2023-04-23T11:14:37Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js * Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js * Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> 861c57c3a9518a2923fdd44867713d1acb8c9d95 805 791 2023-04-23T12:11:03Z 13253902 7 // Edit via Wikiplus wikitext text/x-wiki ==编辑== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit]|SmartClick.js * Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js * Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js ==用户== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==系统== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> 70ee2103073b80fa29493e481f3bf51533105242 809 805 2023-04-23T12:18:01Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit]|SmartClick.js * Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js * Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> 241b3eb80abef12af8413e884843e74c4faaedfa MediaWiki:Gadget-tippy.js 8 350 758 752 2022-05-21T15:50:49Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(() => { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; console.log("OK"); if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: 'toggle', onShow(instance) { get_div(link, instance); } }); }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, (div) => instance.setContent(div)); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ fa69970645ac15ab439f2c996be447cc09bf1e39 759 758 2022-05-21T18:21:49Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(() => { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow(instance) { get_div($(link), instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, ($div) => instance.setContent($div[0])); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ f47757eb7e5965c53636ad7bae7106b764986552 762 759 2022-05-21T18:35:10Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow(instance) { get_div($(link), instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ dce4b73634b87cfbab8a5c84ede40df5bdd98004 763 762 2022-05-21T18:37:08Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow(instance) { get_div($(link), instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ d8a03bda670fb313b6877432d618abf27fe80f49 764 763 2022-05-21T18:37:59Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var SMALL_SCREEN = window.innerWidth < 768; var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow(instance) { get_div($(link), instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ a185b7d6a9b2caa605462ab0dabc23054c08c6e5 765 764 2022-05-21T18:54:43Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow: function(instance) { get_div($(link), instance); } }) }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/tdj/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ 663eaa552fb078c3b3e3366b7f4584d9268358ce 766 765 2022-05-21T19:04:57Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ !function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) })); //# sourceMappingURL=popper.min.js.map !function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F })); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow: function(instance) { get_div($(link), instance); } }); }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/township/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ 5990c48f6cb4f33186f6ae194af61a84843e7d99 773 766 2022-05-23T09:32:02Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ { /** * @popperjs/core v2.11.5 - MIT License */ $(!function (e, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) }(this, (function (e) { "use strict"; function t(e) { if (null == e) return window; if ("[object Window]" !== e.toString()) { var t = e.ownerDocument; return t && t.defaultView || window } return e } function n(e) { return e instanceof t(e).Element || e instanceof Element } function r(e) { return e instanceof t(e).HTMLElement || e instanceof HTMLElement } function o(e) { return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) } var i = Math.max, a = Math.min, s = Math.round; function f(e, t) { void 0 === t && (t = !1); var n = e.getBoundingClientRect(), o = 1, i = 1; if (r(e) && t) { var a = e.offsetHeight, f = e.offsetWidth; f > 0 && (o = s(n.width) / f || 1), a > 0 && (i = s(n.height) / a || 1) } return { width: n.width / o, height: n.height / i, top: n.top / i, right: n.right / o, bottom: n.bottom / i, left: n.left / o, x: n.left / o, y: n.top / i } } function c(e) { var n = t(e); return { scrollLeft: n.pageXOffset, scrollTop: n.pageYOffset } } function p(e) { return e ? (e.nodeName || "").toLowerCase() : null } function u(e) { return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement } function l(e) { return f(u(e)).left + c(e).scrollLeft } function d(e) { return t(e).getComputedStyle(e) } function h(e) { var t = d(e), n = t.overflow, r = t.overflowX, o = t.overflowY; return /auto|scroll|overlay|hidden/.test(n + o + r) } function m(e, n, o) { void 0 === o && (o = !1); var i, a, d = r(n), m = r(n) && function (e) { var t = e.getBoundingClientRect(), n = s(t.width) / e.offsetWidth || 1, r = s(t.height) / e.offsetHeight || 1; return 1 !== n || 1 !== r }(n), v = u(n), g = f(e, m), y = { scrollLeft: 0, scrollTop: 0 }, b = { x: 0, y: 0 }; return (d || !d && !o) && (("body" !== p(n) || h(v)) && (y = (i = n) !== t(i) && r(i) ? { scrollLeft: (a = i).scrollLeft, scrollTop: a.scrollTop } : c(i)), r(n) ? ((b = f(n, !0)).x += n.clientLeft, b.y += n.clientTop) : v && (b.x = l(v))), { x: g.left + y.scrollLeft - b.x, y: g.top + y.scrollTop - b.y, width: g.width, height: g.height } } function v(e) { var t = f(e), n = e.offsetWidth, r = e.offsetHeight; return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { x: e.offsetLeft, y: e.offsetTop, width: n, height: r } } function g(e) { return "html" === p(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || u(e) } function y(e) { return ["html", "body", "#document"].indexOf(p(e)) >= 0 ? e.ownerDocument.body : r(e) && h(e) ? e : y(g(e)) } function b(e, n) { var r; void 0 === n && (n = []); var o = y(e), i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), a = t(o), s = i ? [a].concat(a.visualViewport || [], h(o) ? o : []) : o, f = n.concat(s); return i ? f : f.concat(b(g(s))) } function x(e) { return ["table", "td", "th"].indexOf(p(e)) >= 0 } function w(e) { return r(e) && "fixed" !== d(e).position ? e.offsetParent : null } function O(e) { for (var n = t(e), i = w(e); i && x(i) && "static" === d(i).position;)i = w(i); return i && ("html" === p(i) || "body" === p(i) && "static" === d(i).position) ? n : i || function (e) { var t = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && r(e) && "fixed" === d(e).position) return null; var n = g(e); for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(p(n)) < 0;) { var i = d(n); if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; n = n.parentNode } return null }(e) || n } var j = "top", E = "bottom", D = "right", A = "left", L = "auto", P = [j, E, D, A], M = "start", k = "end", W = "viewport", B = "popper", H = P.reduce((function (e, t) { return e.concat([t + "-" + M, t + "-" + k]) }), []), T = [].concat(P, [L]).reduce((function (e, t) { return e.concat([t, t + "-" + M, t + "-" + k]) }), []), R = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function S(e) { var t = new Map, n = new Set, r = []; function o(e) { n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function (e) { if (!n.has(e)) { var r = t.get(e); r && o(r) } })), r.push(e) } return e.forEach((function (e) { t.set(e.name, e) })), e.forEach((function (e) { n.has(e.name) || o(e) })), r } function C(e) { return e.split("-")[0] } function q(e, t) { var n = t.getRootNode && t.getRootNode(); if (e.contains(t)) return !0; if (n && o(n)) { var r = t; do { if (r && e.isSameNode(r)) return !0; r = r.parentNode || r.host } while (r) } return !1 } function V(e) { return Object.assign({}, e, { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height }) } function N(e, r) { return r === W ? V(function (e) { var n = t(e), r = u(e), o = n.visualViewport, i = r.clientWidth, a = r.clientHeight, s = 0, f = 0; return o && (i = o.width, a = o.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (s = o.offsetLeft, f = o.offsetTop)), { width: i, height: a, x: s + l(e), y: f } }(e)) : n(r) ? function (e) { var t = f(e); return t.top = t.top + e.clientTop, t.left = t.left + e.clientLeft, t.bottom = t.top + e.clientHeight, t.right = t.left + e.clientWidth, t.width = e.clientWidth, t.height = e.clientHeight, t.x = t.left, t.y = t.top, t }(r) : V(function (e) { var t, n = u(e), r = c(e), o = null == (t = e.ownerDocument) ? void 0 : t.body, a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), f = -r.scrollLeft + l(e), p = -r.scrollTop; return "rtl" === d(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { width: a, height: s, x: f, y: p } }(u(e))) } function I(e, t, o) { var s = "clippingParents" === t ? function (e) { var t = b(g(e)), o = ["absolute", "fixed"].indexOf(d(e).position) >= 0 && r(e) ? O(e) : e; return n(o) ? t.filter((function (e) { return n(e) && q(e, o) && "body" !== p(e) })) : [] }(e) : [].concat(t), f = [].concat(s, [o]), c = f[0], u = f.reduce((function (t, n) { var r = N(e, n); return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t }), N(e, c)); return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u } function _(e) { return e.split("-")[1] } function F(e) { return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" } function U(e) { var t, n = e.reference, r = e.element, o = e.placement, i = o ? C(o) : null, a = o ? _(o) : null, s = n.x + n.width / 2 - r.width / 2, f = n.y + n.height / 2 - r.height / 2; switch (i) { case j: t = { x: s, y: n.y - r.height }; break; case E: t = { x: s, y: n.y + n.height }; break; case D: t = { x: n.x + n.width, y: f }; break; case A: t = { x: n.x - r.width, y: f }; break; default: t = { x: n.x, y: n.y } }var c = i ? F(i) : null; if (null != c) { var p = "y" === c ? "height" : "width"; switch (a) { case M: t[c] = t[c] - (n[p] / 2 - r[p] / 2); break; case k: t[c] = t[c] + (n[p] / 2 - r[p] / 2) } } return t } function z(e) { return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e) } function X(e, t) { return t.reduce((function (t, n) { return t[n] = e, t }), {}) } function Y(e, t) { void 0 === t && (t = {}); var r = t, o = r.placement, i = void 0 === o ? e.placement : o, a = r.boundary, s = void 0 === a ? "clippingParents" : a, c = r.rootBoundary, p = void 0 === c ? W : c, l = r.elementContext, d = void 0 === l ? B : l, h = r.altBoundary, m = void 0 !== h && h, v = r.padding, g = void 0 === v ? 0 : v, y = z("number" != typeof g ? g : X(g, P)), b = d === B ? "reference" : B, x = e.rects.popper, w = e.elements[m ? b : d], O = I(n(w) ? w : w.contextElement || u(e.elements.popper), s, p), A = f(e.elements.reference), L = U({ reference: A, element: x, strategy: "absolute", placement: i }), M = V(Object.assign({}, x, L)), k = d === B ? M : A, H = { top: O.top - k.top + y.top, bottom: k.bottom - O.bottom + y.bottom, left: O.left - k.left + y.left, right: k.right - O.right + y.right }, T = e.modifiersData.offset; if (d === B && T) { var R = T[i]; Object.keys(H).forEach((function (e) { var t = [D, E].indexOf(e) >= 0 ? 1 : -1, n = [j, E].indexOf(e) >= 0 ? "y" : "x"; H[e] += R[n] * t })) } return H } var G = { placement: "bottom", modifiers: [], strategy: "absolute" }; function J() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return !t.some((function (e) { return !(e && "function" == typeof e.getBoundingClientRect) })) } function K(e) { void 0 === e && (e = {}); var t = e, r = t.defaultModifiers, o = void 0 === r ? [] : r, i = t.defaultOptions, a = void 0 === i ? G : i; return function (e, t, r) { void 0 === r && (r = a); var i, s, f = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, G, a), modifiersData: {}, elements: { reference: e, popper: t }, attributes: {}, styles: {} }, c = [], p = !1, u = { state: f, setOptions: function (r) { var i = "function" == typeof r ? r(f.options) : r; l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { reference: n(e) ? b(e) : e.contextElement ? b(e.contextElement) : [], popper: b(t) }; var s, p, d = function (e) { var t = S(e); return R.reduce((function (e, n) { return e.concat(t.filter((function (e) { return e.phase === n }))) }), []) }((s = [].concat(o, f.options.modifiers), p = s.reduce((function (e, t) { var n = e[t.name]; return e[t.name] = n ? Object.assign({}, n, t, { options: Object.assign({}, n.options, t.options), data: Object.assign({}, n.data, t.data) }) : t, e }), {}), Object.keys(p).map((function (e) { return p[e] })))); return f.orderedModifiers = d.filter((function (e) { return e.enabled })), f.orderedModifiers.forEach((function (e) { var t = e.name, n = e.options, r = void 0 === n ? {} : n, o = e.effect; if ("function" == typeof o) { var i = o({ state: f, name: t, instance: u, options: r }), a = function () { }; c.push(i || a) } })), u.update() }, forceUpdate: function () { if (!p) { var e = f.elements, t = e.reference, n = e.popper; if (J(t, n)) { f.rects = { reference: m(t, O(n), "fixed" === f.options.strategy), popper: v(n) }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function (e) { return f.modifiersData[e.name] = Object.assign({}, e.data) })); for (var r = 0; r < f.orderedModifiers.length; r++)if (!0 !== f.reset) { var o = f.orderedModifiers[r], i = o.fn, a = o.options, s = void 0 === a ? {} : a, c = o.name; "function" == typeof i && (f = i({ state: f, options: s, name: c, instance: u }) || f) } else f.reset = !1, r = -1 } } }, update: (i = function () { return new Promise((function (e) { u.forceUpdate(), e(f) })) }, function () { return s || (s = new Promise((function (e) { Promise.resolve().then((function () { s = void 0, e(i()) })) }))), s }), destroy: function () { l(), p = !0 } }; if (!J(e, t)) return u; function l() { c.forEach((function (e) { return e() })), c = [] } return u.setOptions(r).then((function (e) { !p && r.onFirstUpdate && r.onFirstUpdate(e) })), u } } var Q = { passive: !0 }; var Z = { name: "eventListeners", enabled: !0, phase: "write", fn: function () { }, effect: function (e) { var n = e.state, r = e.instance, o = e.options, i = o.scroll, a = void 0 === i || i, s = o.resize, f = void 0 === s || s, c = t(n.elements.popper), p = [].concat(n.scrollParents.reference, n.scrollParents.popper); return a && p.forEach((function (e) { e.addEventListener("scroll", r.update, Q) })), f && c.addEventListener("resize", r.update, Q), function () { a && p.forEach((function (e) { e.removeEventListener("scroll", r.update, Q) })), f && c.removeEventListener("resize", r.update, Q) } }, data: {} }; var $ = { name: "popperOffsets", enabled: !0, phase: "read", fn: function (e) { var t = e.state, n = e.name; t.modifiersData[n] = U({ reference: t.rects.reference, element: t.rects.popper, strategy: "absolute", placement: t.placement }) }, data: {} }, ee = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function te(e) { var n, r = e.popper, o = e.popperRect, i = e.placement, a = e.variation, f = e.offsets, c = e.position, p = e.gpuAcceleration, l = e.adaptive, h = e.roundOffsets, m = e.isFixed, v = f.x, g = void 0 === v ? 0 : v, y = f.y, b = void 0 === y ? 0 : y, x = "function" == typeof h ? h({ x: g, y: b }) : { x: g, y: b }; g = x.x, b = x.y; var w = f.hasOwnProperty("x"), L = f.hasOwnProperty("y"), P = A, M = j, W = window; if (l) { var B = O(r), H = "clientHeight", T = "clientWidth"; if (B === t(r) && "static" !== d(B = u(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), B = B, i === j || (i === A || i === D) && a === k) M = E, b -= (m && B === W && W.visualViewport ? W.visualViewport.height : B[H]) - o.height, b *= p ? 1 : -1; if (i === A || (i === j || i === E) && a === k) P = D, g -= (m && B === W && W.visualViewport ? W.visualViewport.width : B[T]) - o.width, g *= p ? 1 : -1 } var R, S = Object.assign({ position: c }, l && ee), C = !0 === h ? function (e) { var t = e.x, n = e.y, r = window.devicePixelRatio || 1; return { x: s(t * r) / r || 0, y: s(n * r) / r || 0 } }({ x: g, y: b }) : { x: g, y: b }; return g = C.x, b = C.y, p ? Object.assign({}, S, ((R = {})[M] = L ? "0" : "", R[P] = w ? "0" : "", R.transform = (W.devicePixelRatio || 1) <= 1 ? "translate(" + g + "px, " + b + "px)" : "translate3d(" + g + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = L ? b + "px" : "", n[P] = w ? g + "px" : "", n.transform = "", n)) } var ne = { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function (e) { var t = e.state, n = e.options, r = n.gpuAcceleration, o = void 0 === r || r, i = n.adaptive, a = void 0 === i || i, s = n.roundOffsets, f = void 0 === s || s, c = { placement: C(t.placement), variation: _(t.placement), popper: t.elements.popper, popperRect: t.rects.popper, gpuAcceleration: o, isFixed: "fixed" === t.options.strategy }; null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, te(Object.assign({}, c, { offsets: t.modifiersData.popperOffsets, position: t.options.strategy, adaptive: a, roundOffsets: f })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, te(Object.assign({}, c, { offsets: t.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: f })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-placement": t.placement }) }, data: {} }; var re = { name: "applyStyles", enabled: !0, phase: "write", fn: function (e) { var t = e.state; Object.keys(t.elements).forEach((function (e) { var n = t.styles[e] || {}, o = t.attributes[e] || {}, i = t.elements[e]; r(i) && p(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function (e) { var t = o[e]; !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) }))) })) }, effect: function (e) { var t = e.state, n = { popper: { position: t.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), function () { Object.keys(t.elements).forEach((function (e) { var o = t.elements[e], i = t.attributes[e] || {}, a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function (e, t) { return e[t] = "", e }), {}); r(o) && p(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function (e) { o.removeAttribute(e) }))) })) } }, requires: ["computeStyles"] }; var oe = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.offset, i = void 0 === o ? [0, 0] : o, a = T.reduce((function (e, n) { return e[n] = function (e, t, n) { var r = C(e), o = [A, j].indexOf(r) >= 0 ? -1 : 1, i = "function" == typeof n ? n(Object.assign({}, t, { placement: e })) : n, a = i[0], s = i[1]; return a = a || 0, s = (s || 0) * o, [A, D].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s } }(n, t.rects, i), e }), {}), s = a[t.placement], f = s.x, c = s.y; null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a } }, ie = { left: "right", right: "left", bottom: "top", top: "bottom" }; function ae(e) { return e.replace(/left|right|bottom|top/g, (function (e) { return ie[e] })) } var se = { start: "end", end: "start" }; function fe(e) { return e.replace(/start|end/g, (function (e) { return se[e] })) } function ce(e, t) { void 0 === t && (t = {}); var n = t, r = n.placement, o = n.boundary, i = n.rootBoundary, a = n.padding, s = n.flipVariations, f = n.allowedAutoPlacements, c = void 0 === f ? T : f, p = _(r), u = p ? s ? H : H.filter((function (e) { return _(e) === p })) : P, l = u.filter((function (e) { return c.indexOf(e) >= 0 })); 0 === l.length && (l = u); var d = l.reduce((function (t, n) { return t[n] = Y(e, { placement: n, boundary: o, rootBoundary: i, padding: a })[C(n)], t }), {}); return Object.keys(d).sort((function (e, t) { return d[e] - d[t] })) } var pe = { name: "flip", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name; if (!t.modifiersData[r]._skip) { for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, g = C(v), y = f || (g === v || !h ? [ae(v)] : function (e) { if (C(e) === L) return []; var t = ae(e); return [fe(e), t, fe(t)] }(v)), b = [v].concat(y).reduce((function (e, n) { return e.concat(C(n) === L ? ce(t, { placement: n, boundary: p, rootBoundary: u, padding: c, flipVariations: h, allowedAutoPlacements: m }) : n) }), []), x = t.rects.reference, w = t.rects.popper, O = new Map, P = !0, k = b[0], W = 0; W < b.length; W++) { var B = b[W], H = C(B), T = _(B) === M, R = [j, E].indexOf(H) >= 0, S = R ? "width" : "height", q = Y(t, { placement: B, boundary: p, rootBoundary: u, altBoundary: l, padding: c }), V = R ? T ? D : A : T ? E : j; x[S] > w[S] && (V = ae(V)); var N = ae(V), I = []; if (i && I.push(q[H] <= 0), s && I.push(q[V] <= 0, q[N] <= 0), I.every((function (e) { return e }))) { k = B, P = !1; break } O.set(B, I) } if (P) for (var F = function (e) { var t = b.find((function (t) { var n = O.get(t); if (n) return n.slice(0, e).every((function (e) { return e })) })); if (t) return k = t, "break" }, U = h ? 3 : 1; U > 0; U--) { if ("break" === F(U)) break } t.placement !== k && (t.modifiersData[r]._skip = !0, t.placement = k, t.reset = !0) } }, requiresIfExists: ["offset"], data: { _skip: !1 } }; function ue(e, t, n) { return i(e, a(t, n)) } var le = { name: "preventOverflow", enabled: !0, phase: "main", fn: function (e) { var t = e.state, n = e.options, r = e.name, o = n.mainAxis, s = void 0 === o || o, f = n.altAxis, c = void 0 !== f && f, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.padding, h = n.tether, m = void 0 === h || h, g = n.tetherOffset, y = void 0 === g ? 0 : g, b = Y(t, { boundary: p, rootBoundary: u, padding: d, altBoundary: l }), x = C(t.placement), w = _(t.placement), L = !w, P = F(x), k = "x" === P ? "y" : "x", W = t.modifiersData.popperOffsets, B = t.rects.reference, H = t.rects.popper, T = "function" == typeof y ? y(Object.assign({}, t.rects, { placement: t.placement })) : y, R = "number" == typeof T ? { mainAxis: T, altAxis: T } : Object.assign({ mainAxis: 0, altAxis: 0 }, T), S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, q = { x: 0, y: 0 }; if (W) { if (s) { var V, N = "y" === P ? j : A, I = "y" === P ? E : D, U = "y" === P ? "height" : "width", z = W[P], X = z + b[N], G = z - b[I], J = m ? -H[U] / 2 : 0, K = w === M ? B[U] : H[U], Q = w === M ? -H[U] : -B[U], Z = t.elements.arrow, $ = m && Z ? v(Z) : { width: 0, height: 0 }, ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { top: 0, right: 0, bottom: 0, left: 0 }, te = ee[N], ne = ee[I], re = ue(0, B[U], $[U]), oe = L ? B[U] / 2 - J - re - te - R.mainAxis : K - re - te - R.mainAxis, ie = L ? -B[U] / 2 + J + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, ae = t.elements.arrow && O(t.elements.arrow), se = ae ? "y" === P ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, fe = null != (V = null == S ? void 0 : S[P]) ? V : 0, ce = z + ie - fe, pe = ue(m ? a(X, z + oe - fe - se) : X, z, m ? i(G, ce) : G); W[P] = pe, q[P] = pe - z } if (c) { var le, de = "x" === P ? j : A, he = "x" === P ? E : D, me = W[k], ve = "y" === k ? "height" : "width", ge = me + b[de], ye = me - b[he], be = -1 !== [j, A].indexOf(x), xe = null != (le = null == S ? void 0 : S[k]) ? le : 0, we = be ? ge : me - B[ve] - H[ve] - xe + R.altAxis, Oe = be ? me + B[ve] + H[ve] - xe - R.altAxis : ye, je = m && be ? function (e, t, n) { var r = ue(e, t, n); return r > n ? n : r }(we, me, Oe) : ue(m ? we : ge, me, m ? Oe : ye); W[k] = je, q[k] = je - me } t.modifiersData[r] = q } }, requiresIfExists: ["offset"] }; var de = { name: "arrow", enabled: !0, phase: "main", fn: function (e) { var t, n = e.state, r = e.name, o = e.options, i = n.elements.arrow, a = n.modifiersData.popperOffsets, s = C(n.placement), f = F(s), c = [A, D].indexOf(s) >= 0 ? "height" : "width"; if (i && a) { var p = function (e, t) { return z("number" != typeof (e = "function" == typeof e ? e(Object.assign({}, t.rects, { placement: t.placement })) : e) ? e : X(e, P)) }(o.padding, n), u = v(i), l = "y" === f ? j : A, d = "y" === f ? E : D, h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], m = a[f] - n.rects.reference[f], g = O(i), y = g ? "y" === f ? g.clientHeight || 0 : g.clientWidth || 0 : 0, b = h / 2 - m / 2, x = p[l], w = y - u[c] - p[d], L = y / 2 - u[c] / 2 + b, M = ue(x, L, w), k = f; n.modifiersData[r] = ((t = {})[k] = M, t.centerOffset = M - L, t) } }, effect: function (e) { var t = e.state, n = e.options.element, r = void 0 === n ? "[data-popper-arrow]" : n; null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && q(t.elements.popper, r) && (t.elements.arrow = r) }, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; function he(e, t, n) { return void 0 === n && (n = { x: 0, y: 0 }), { top: e.top - t.height - n.y, right: e.right - t.width + n.x, bottom: e.bottom - t.height + n.y, left: e.left - t.width - n.x } } function me(e) { return [j, D, E, A].some((function (t) { return e[t] >= 0 })) } var ve = { name: "hide", enabled: !0, phase: "main", requiresIfExists: ["preventOverflow"], fn: function (e) { var t = e.state, n = e.name, r = t.rects.reference, o = t.rects.popper, i = t.modifiersData.preventOverflow, a = Y(t, { elementContext: "reference" }), s = Y(t, { altBoundary: !0 }), f = he(a, r), c = he(s, o, i), p = me(f), u = me(c); t.modifiersData[n] = { referenceClippingOffsets: f, popperEscapeOffsets: c, isReferenceHidden: p, hasPopperEscaped: u }, t.attributes.popper = Object.assign({}, t.attributes.popper, { "data-popper-reference-hidden": p, "data-popper-escaped": u }) } }, ge = K({ defaultModifiers: [Z, $, ne, re] }), ye = [Z, $, ne, re, oe, pe, le, de, ve], be = K({ defaultModifiers: ye }); e.applyStyles = re, e.arrow = de, e.computeStyles = ne, e.createPopper = be, e.createPopperLite = ge, e.defaultModifiers = ye, e.detectOverflow = Y, e.eventListeners = Z, e.flip = pe, e.hide = ve, e.offset = oe, e.popperGenerator = K, e.popperOffsets = $, e.preventOverflow = le, Object.defineProperty(e, "__esModule", { value: !0 }) }));); //# sourceMappingURL=popper.min.js.map $(!function (t, e) { "object" == typeof exports && "undefined" != typeof module ? module.exports = e(require("@popperjs/core")) : "function" == typeof define && define.amd ? define(["@popperjs/core"], e) : (t = t || self).tippy = e(t.Popper) }(this, (function (t) { "use strict"; var e = "undefined" != typeof window && "undefined" != typeof document, n = !!e && !!window.msCrypto, r = { passive: !0, capture: !0 }, o = function () { return document.body }; function i(t, e, n) { if (Array.isArray(t)) { var r = t[e]; return null == r ? Array.isArray(n) ? n[e] : n : r } return t } function a(t, e) { var n = {}.toString.call(t); return 0 === n.indexOf("[object") && n.indexOf(e + "]") > -1 } function s(t, e) { return "function" == typeof t ? t.apply(void 0, e) : t } function u(t, e) { return 0 === e ? t : function (r) { clearTimeout(n), n = setTimeout((function () { t(r) }), e) }; var n } function p(t, e) { var n = Object.assign({}, t); return e.forEach((function (t) { delete n[t] })), n } function c(t) { return [].concat(t) } function f(t, e) { -1 === t.indexOf(e) && t.push(e) } function l(t) { return t.split("-")[0] } function d(t) { return [].slice.call(t) } function v(t) { return Object.keys(t).reduce((function (e, n) { return void 0 !== t[n] && (e[n] = t[n]), e }), {}) } function m() { return document.createElement("div") } function g(t) { return ["Element", "Fragment"].some((function (e) { return a(t, e) })) } function h(t) { return a(t, "MouseEvent") } function b(t) { return !(!t || !t._tippy || t._tippy.reference !== t) } function y(t) { return g(t) ? [t] : function (t) { return a(t, "NodeList") }(t) ? d(t) : Array.isArray(t) ? t : d(document.querySelectorAll(t)) } function w(t, e) { t.forEach((function (t) { t && (t.style.transitionDuration = e + "ms") })) } function x(t, e) { t.forEach((function (t) { t && t.setAttribute("data-state", e) })) } function E(t) { var e, n = c(t)[0]; return null != n && null != (e = n.ownerDocument) && e.body ? n.ownerDocument : document } function O(t, e, n) { var r = e + "EventListener";["transitionend", "webkitTransitionEnd"].forEach((function (e) { t[r](e, n) })) } function C(t, e) { for (var n = e; n;) { var r; if (t.contains(n)) return !0; n = null == n.getRootNode || null == (r = n.getRootNode()) ? void 0 : r.host } return !1 } var T = { isTouch: !1 }, A = 0; function L() { T.isTouch || (T.isTouch = !0, window.performance && document.addEventListener("mousemove", D)) } function D() { var t = performance.now(); t - A < 20 && (T.isTouch = !1, document.removeEventListener("mousemove", D)), A = t } function k() { var t = document.activeElement; if (b(t)) { var e = t._tippy; t.blur && !e.state.isVisible && t.blur() } } var R = Object.assign({ appendTo: o, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: !0, ignoreAttributes: !1, interactive: !1, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function () { }, onBeforeUpdate: function () { }, onCreate: function () { }, onDestroy: function () { }, onHidden: function () { }, onHide: function () { }, onMount: function () { }, onShow: function () { }, onShown: function () { }, onTrigger: function () { }, onUntrigger: function () { }, onClickOutside: function () { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: !1, touch: !0, trigger: "mouseenter focus", triggerTarget: null }, { animateFill: !1, followCursor: !1, inlinePositioning: !1, sticky: !1 }, { allowHTML: !1, animation: "fade", arrow: !0, content: "", inertia: !1, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }), P = Object.keys(R); function j(t) { var e = (t.plugins || []).reduce((function (e, n) { var r, o = n.name, i = n.defaultValue; o && (e[o] = void 0 !== t[o] ? t[o] : null != (r = R[o]) ? r : i); return e }), {}); return Object.assign({}, t, e) } function M(t, e) { var n = Object.assign({}, e, { content: s(e.content, [t]) }, e.ignoreAttributes ? {} : function (t, e) { return (e ? Object.keys(j(Object.assign({}, R, { plugins: e }))) : P).reduce((function (e, n) { var r = (t.getAttribute("data-tippy-" + n) || "").trim(); if (!r) return e; if ("content" === n) e[n] = r; else try { e[n] = JSON.parse(r) } catch (t) { e[n] = r } return e }), {}) }(t, e.plugins)); return n.aria = Object.assign({}, R.aria, n.aria), n.aria = { expanded: "auto" === n.aria.expanded ? e.interactive : n.aria.expanded, content: "auto" === n.aria.content ? e.interactive ? null : "describedby" : n.aria.content }, n } function V(t, e) { t.innerHTML = e } function I(t) { var e = m(); return !0 === t ? e.className = "tippy-arrow" : (e.className = "tippy-svg-arrow", g(t) ? e.appendChild(t) : V(e, t)), e } function S(t, e) { g(e.content) ? (V(t, ""), t.appendChild(e.content)) : "function" != typeof e.content && (e.allowHTML ? V(t, e.content) : t.textContent = e.content) } function B(t) { var e = t.firstElementChild, n = d(e.children); return { box: e, content: n.find((function (t) { return t.classList.contains("tippy-content") })), arrow: n.find((function (t) { return t.classList.contains("tippy-arrow") || t.classList.contains("tippy-svg-arrow") })), backdrop: n.find((function (t) { return t.classList.contains("tippy-backdrop") })) } } function N(t) { var e = m(), n = m(); n.className = "tippy-box", n.setAttribute("data-state", "hidden"), n.setAttribute("tabindex", "-1"); var r = m(); function o(n, r) { var o = B(e), i = o.box, a = o.content, s = o.arrow; r.theme ? i.setAttribute("data-theme", r.theme) : i.removeAttribute("data-theme"), "string" == typeof r.animation ? i.setAttribute("data-animation", r.animation) : i.removeAttribute("data-animation"), r.inertia ? i.setAttribute("data-inertia", "") : i.removeAttribute("data-inertia"), i.style.maxWidth = "number" == typeof r.maxWidth ? r.maxWidth + "px" : r.maxWidth, r.role ? i.setAttribute("role", r.role) : i.removeAttribute("role"), n.content === r.content && n.allowHTML === r.allowHTML || S(a, t.props), r.arrow ? s ? n.arrow !== r.arrow && (i.removeChild(s), i.appendChild(I(r.arrow))) : i.appendChild(I(r.arrow)) : s && i.removeChild(s) } return r.className = "tippy-content", r.setAttribute("data-state", "hidden"), S(r, t.props), e.appendChild(n), n.appendChild(r), o(t.props, t.props), { popper: e, onUpdate: o } } N.$$tippy = !0; var H = 1, U = [], _ = []; function z(e, a) { var p, g, b, y, A, L, D, k, P = M(e, Object.assign({}, R, j(v(a)))), V = !1, I = !1, S = !1, N = !1, z = [], F = u(wt, P.interactiveDebounce), W = H++, X = (k = P.plugins).filter((function (t, e) { return k.indexOf(t) === e })), Y = { id: W, reference: e, popper: m(), popperInstance: null, props: P, state: { isEnabled: !0, isVisible: !1, isDestroyed: !1, isMounted: !1, isShown: !1 }, plugins: X, clearDelayTimeouts: function () { clearTimeout(p), clearTimeout(g), cancelAnimationFrame(b) }, setProps: function (t) { if (Y.state.isDestroyed) return; at("onBeforeUpdate", [Y, t]), bt(); var n = Y.props, r = M(e, Object.assign({}, n, v(t), { ignoreAttributes: !0 })); Y.props = r, ht(), n.interactiveDebounce !== r.interactiveDebounce && (pt(), F = u(wt, r.interactiveDebounce)); n.triggerTarget && !r.triggerTarget ? c(n.triggerTarget).forEach((function (t) { t.removeAttribute("aria-expanded") })) : r.triggerTarget && e.removeAttribute("aria-expanded"); ut(), it(), J && J(n, r); Y.popperInstance && (Ct(), At().forEach((function (t) { requestAnimationFrame(t._tippy.popperInstance.forceUpdate) }))); at("onAfterUpdate", [Y, t]) }, setContent: function (t) { Y.setProps({ content: t }) }, show: function () { var t = Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = T.isTouch && !Y.props.touch, a = i(Y.props.duration, 0, R.duration); if (t || e || n || r) return; if (et().hasAttribute("disabled")) return; if (at("onShow", [Y], !1), !1 === Y.props.onShow(Y)) return; Y.state.isVisible = !0, tt() && ($.style.visibility = "visible"); it(), dt(), Y.state.isMounted || ($.style.transition = "none"); if (tt()) { var u = rt(), p = u.box, c = u.content; w([p, c], 0) } L = function () { var t; if (Y.state.isVisible && !N) { if (N = !0, $.offsetHeight, $.style.transition = Y.props.moveTransition, tt() && Y.props.animation) { var e = rt(), n = e.box, r = e.content; w([n, r], a), x([n, r], "visible") } st(), ut(), f(_, Y), null == (t = Y.popperInstance) || t.forceUpdate(), at("onMount", [Y]), Y.props.animation && tt() && function (t, e) { mt(t, e) }(a, (function () { Y.state.isShown = !0, at("onShown", [Y]) })) } }, function () { var t, e = Y.props.appendTo, n = et(); t = Y.props.interactive && e === o || "parent" === e ? n.parentNode : s(e, [n]); t.contains($) || t.appendChild($); Y.state.isMounted = !0, Ct() }() }, hide: function () { var t = !Y.state.isVisible, e = Y.state.isDestroyed, n = !Y.state.isEnabled, r = i(Y.props.duration, 1, R.duration); if (t || e || n) return; if (at("onHide", [Y], !1), !1 === Y.props.onHide(Y)) return; Y.state.isVisible = !1, Y.state.isShown = !1, N = !1, V = !1, tt() && ($.style.visibility = "hidden"); if (pt(), vt(), it(!0), tt()) { var o = rt(), a = o.box, s = o.content; Y.props.animation && (w([a, s], r), x([a, s], "hidden")) } st(), ut(), Y.props.animation ? tt() && function (t, e) { mt(t, (function () { !Y.state.isVisible && $.parentNode && $.parentNode.contains($) && e() })) }(r, Y.unmount) : Y.unmount() }, hideWithInteractivity: function (t) { nt().addEventListener("mousemove", F), f(U, F), F(t) }, enable: function () { Y.state.isEnabled = !0 }, disable: function () { Y.hide(), Y.state.isEnabled = !1 }, unmount: function () { Y.state.isVisible && Y.hide(); if (!Y.state.isMounted) return; Tt(), At().forEach((function (t) { t._tippy.unmount() })), $.parentNode && $.parentNode.removeChild($); _ = _.filter((function (t) { return t !== Y })), Y.state.isMounted = !1, at("onHidden", [Y]) }, destroy: function () { if (Y.state.isDestroyed) return; Y.clearDelayTimeouts(), Y.unmount(), bt(), delete e._tippy, Y.state.isDestroyed = !0, at("onDestroy", [Y]) } }; if (!P.render) return Y; var q = P.render(Y), $ = q.popper, J = q.onUpdate; $.setAttribute("data-tippy-root", ""), $.id = "tippy-" + Y.id, Y.popper = $, e._tippy = Y, $._tippy = Y; var G = X.map((function (t) { return t.fn(Y) })), K = e.hasAttribute("aria-expanded"); return ht(), ut(), it(), at("onCreate", [Y]), P.showOnCreate && Lt(), $.addEventListener("mouseenter", (function () { Y.props.interactive && Y.state.isVisible && Y.clearDelayTimeouts() })), $.addEventListener("mouseleave", (function () { Y.props.interactive && Y.props.trigger.indexOf("mouseenter") >= 0 && nt().addEventListener("mousemove", F) })), Y; function Q() { var t = Y.props.touch; return Array.isArray(t) ? t : [t, 0] } function Z() { return "hold" === Q()[0] } function tt() { var t; return !(null == (t = Y.props.render) || !t.$$tippy) } function et() { return D || e } function nt() { var t = et().parentNode; return t ? E(t) : document } function rt() { return B($) } function ot(t) { return Y.state.isMounted && !Y.state.isVisible || T.isTouch || y && "focus" === y.type ? 0 : i(Y.props.delay, t ? 0 : 1, R.delay) } function it(t) { void 0 === t && (t = !1), $.style.pointerEvents = Y.props.interactive && !t ? "" : "none", $.style.zIndex = "" + Y.props.zIndex } function at(t, e, n) { var r; (void 0 === n && (n = !0), G.forEach((function (n) { n[t] && n[t].apply(n, e) })), n) && (r = Y.props)[t].apply(r, e) } function st() { var t = Y.props.aria; if (t.content) { var n = "aria-" + t.content, r = $.id; c(Y.props.triggerTarget || e).forEach((function (t) { var e = t.getAttribute(n); if (Y.state.isVisible) t.setAttribute(n, e ? e + " " + r : r); else { var o = e && e.replace(r, "").trim(); o ? t.setAttribute(n, o) : t.removeAttribute(n) } })) } } function ut() { !K && Y.props.aria.expanded && c(Y.props.triggerTarget || e).forEach((function (t) { Y.props.interactive ? t.setAttribute("aria-expanded", Y.state.isVisible && t === et() ? "true" : "false") : t.removeAttribute("aria-expanded") })) } function pt() { nt().removeEventListener("mousemove", F), U = U.filter((function (t) { return t !== F })) } function ct(t) { if (!T.isTouch || !S && "mousedown" !== t.type) { var n = t.composedPath && t.composedPath()[0] || t.target; if (!Y.props.interactive || !C($, n)) { if (c(Y.props.triggerTarget || e).some((function (t) { return C(t, n) }))) { if (T.isTouch) return; if (Y.state.isVisible && Y.props.trigger.indexOf("click") >= 0) return } else at("onClickOutside", [Y, t]); !0 === Y.props.hideOnClick && (Y.clearDelayTimeouts(), Y.hide(), I = !0, setTimeout((function () { I = !1 })), Y.state.isMounted || vt()) } } } function ft() { S = !0 } function lt() { S = !1 } function dt() { var t = nt(); t.addEventListener("mousedown", ct, !0), t.addEventListener("touchend", ct, r), t.addEventListener("touchstart", lt, r), t.addEventListener("touchmove", ft, r) } function vt() { var t = nt(); t.removeEventListener("mousedown", ct, !0), t.removeEventListener("touchend", ct, r), t.removeEventListener("touchstart", lt, r), t.removeEventListener("touchmove", ft, r) } function mt(t, e) { var n = rt().box; function r(t) { t.target === n && (O(n, "remove", r), e()) } if (0 === t) return e(); O(n, "remove", A), O(n, "add", r), A = r } function gt(t, n, r) { void 0 === r && (r = !1), c(Y.props.triggerTarget || e).forEach((function (e) { e.addEventListener(t, n, r), z.push({ node: e, eventType: t, handler: n, options: r }) })) } function ht() { var t; Z() && (gt("touchstart", yt, { passive: !0 }), gt("touchend", xt, { passive: !0 })), (t = Y.props.trigger, t.split(/\s+/).filter(Boolean)).forEach((function (t) { if ("manual" !== t) switch (gt(t, yt), t) { case "mouseenter": gt("mouseleave", xt); break; case "focus": gt(n ? "focusout" : "blur", Et); break; case "focusin": gt("focusout", Et) } })) } function bt() { z.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), z = [] } function yt(t) { var e, n = !1; if (Y.state.isEnabled && !Ot(t) && !I) { var r = "focus" === (null == (e = y) ? void 0 : e.type); y = t, D = t.currentTarget, ut(), !Y.state.isVisible && h(t) && U.forEach((function (e) { return e(t) })), "click" === t.type && (Y.props.trigger.indexOf("mouseenter") < 0 || V) && !1 !== Y.props.hideOnClick && Y.state.isVisible ? n = !0 : Lt(t), "click" === t.type && (V = !n), n && !r && Dt(t) } } function wt(t) { var e = t.target, n = et().contains(e) || $.contains(e); "mousemove" === t.type && n || function (t, e) { var n = e.clientX, r = e.clientY; return t.every((function (t) { var e = t.popperRect, o = t.popperState, i = t.props.interactiveBorder, a = l(o.placement), s = o.modifiersData.offset; if (!s) return !0; var u = "bottom" === a ? s.top.y : 0, p = "top" === a ? s.bottom.y : 0, c = "right" === a ? s.left.x : 0, f = "left" === a ? s.right.x : 0, d = e.top - r + u > i, v = r - e.bottom - p > i, m = e.left - n + c > i, g = n - e.right - f > i; return d || v || m || g })) }(At().concat($).map((function (t) { var e, n = null == (e = t._tippy.popperInstance) ? void 0 : e.state; return n ? { popperRect: t.getBoundingClientRect(), popperState: n, props: P } : null })).filter(Boolean), t) && (pt(), Dt(t)) } function xt(t) { Ot(t) || Y.props.trigger.indexOf("click") >= 0 && V || (Y.props.interactive ? Y.hideWithInteractivity(t) : Dt(t)) } function Et(t) { Y.props.trigger.indexOf("focusin") < 0 && t.target !== et() || Y.props.interactive && t.relatedTarget && $.contains(t.relatedTarget) || Dt(t) } function Ot(t) { return !!T.isTouch && Z() !== t.type.indexOf("touch") >= 0 } function Ct() { Tt(); var n = Y.props, r = n.popperOptions, o = n.placement, i = n.offset, a = n.getReferenceClientRect, s = n.moveTransition, u = tt() ? B($).arrow : null, p = a ? { getBoundingClientRect: a, contextElement: a.contextElement || et() } : e, c = [{ name: "offset", options: { offset: i } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !s } }, { name: "$$tippy", enabled: !0, phase: "beforeWrite", requires: ["computeStyles"], fn: function (t) { var e = t.state; if (tt()) { var n = rt().box;["placement", "reference-hidden", "escaped"].forEach((function (t) { "placement" === t ? n.setAttribute("data-placement", e.placement) : e.attributes.popper["data-popper-" + t] ? n.setAttribute("data-" + t, "") : n.removeAttribute("data-" + t) })), e.attributes.popper = {} } } }]; tt() && u && c.push({ name: "arrow", options: { element: u, padding: 3 } }), c.push.apply(c, (null == r ? void 0 : r.modifiers) || []), Y.popperInstance = t.createPopper(p, $, Object.assign({}, r, { placement: o, onFirstUpdate: L, modifiers: c })) } function Tt() { Y.popperInstance && (Y.popperInstance.destroy(), Y.popperInstance = null) } function At() { return d($.querySelectorAll("[data-tippy-root]")) } function Lt(t) { Y.clearDelayTimeouts(), t && at("onTrigger", [Y, t]), dt(); var e = ot(!0), n = Q(), r = n[0], o = n[1]; T.isTouch && "hold" === r && o && (e = o), e ? p = setTimeout((function () { Y.show() }), e) : Y.show() } function Dt(t) { if (Y.clearDelayTimeouts(), at("onUntrigger", [Y, t]), Y.state.isVisible) { if (!(Y.props.trigger.indexOf("mouseenter") >= 0 && Y.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(t.type) >= 0 && V)) { var e = ot(!1); e ? g = setTimeout((function () { Y.state.isVisible && Y.hide() }), e) : b = requestAnimationFrame((function () { Y.hide() })) } } else vt() } } function F(t, e) { void 0 === e && (e = {}); var n = R.plugins.concat(e.plugins || []); document.addEventListener("touchstart", L, r), window.addEventListener("blur", k); var o = Object.assign({}, e, { plugins: n }), i = y(t).reduce((function (t, e) { var n = e && z(e, o); return n && t.push(n), t }), []); return g(t) ? i[0] : i } F.defaultProps = R, F.setDefaultProps = function (t) { Object.keys(t).forEach((function (e) { R[e] = t[e] })) }, F.currentInput = T; var W = Object.assign({}, t.applyStyles, { effect: function (t) { var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow) } }), X = { mouseover: "mouseenter", focusin: "focus", click: "click" }; var Y = { name: "animateFill", defaultValue: !1, fn: function (t) { var e; if (null == (e = t.props.render) || !e.$$tippy) return {}; var n = B(t.popper), r = n.box, o = n.content, i = t.props.animateFill ? function () { var t = m(); return t.className = "tippy-backdrop", x([t], "hidden"), t }() : null; return { onCreate: function () { i && (r.insertBefore(i, r.firstElementChild), r.setAttribute("data-animatefill", ""), r.style.overflow = "hidden", t.setProps({ arrow: !1, animation: "shift-away" })) }, onMount: function () { if (i) { var t = r.style.transitionDuration, e = Number(t.replace("ms", "")); o.style.transitionDelay = Math.round(e / 10) + "ms", i.style.transitionDuration = t, x([i], "visible") } }, onShow: function () { i && (i.style.transitionDuration = "0ms") }, onHide: function () { i && x([i], "hidden") } } } }; var q = { clientX: 0, clientY: 0 }, $ = []; function J(t) { var e = t.clientX, n = t.clientY; q = { clientX: e, clientY: n } } var G = { name: "followCursor", defaultValue: !1, fn: function (t) { var e = t.reference, n = E(t.props.triggerTarget || e), r = !1, o = !1, i = !0, a = t.props; function s() { return "initial" === t.props.followCursor && t.state.isVisible } function u() { n.addEventListener("mousemove", f) } function p() { n.removeEventListener("mousemove", f) } function c() { r = !0, t.setProps({ getReferenceClientRect: null }), r = !1 } function f(n) { var r = !n.target || e.contains(n.target), o = t.props.followCursor, i = n.clientX, a = n.clientY, s = e.getBoundingClientRect(), u = i - s.left, p = a - s.top; !r && t.props.interactive || t.setProps({ getReferenceClientRect: function () { var t = e.getBoundingClientRect(), n = i, r = a; "initial" === o && (n = t.left + u, r = t.top + p); var s = "horizontal" === o ? t.top : r, c = "vertical" === o ? t.right : n, f = "horizontal" === o ? t.bottom : r, l = "vertical" === o ? t.left : n; return { width: c - l, height: f - s, top: s, right: c, bottom: f, left: l } } }) } function l() { t.props.followCursor && ($.push({ instance: t, doc: n }), function (t) { t.addEventListener("mousemove", J) }(n)) } function d() { 0 === ($ = $.filter((function (e) { return e.instance !== t }))).filter((function (t) { return t.doc === n })).length && function (t) { t.removeEventListener("mousemove", J) }(n) } return { onCreate: l, onDestroy: d, onBeforeUpdate: function () { a = t.props }, onAfterUpdate: function (e, n) { var i = n.followCursor; r || void 0 !== i && a.followCursor !== i && (d(), i ? (l(), !t.state.isMounted || o || s() || u()) : (p(), c())) }, onMount: function () { t.props.followCursor && !o && (i && (f(q), i = !1), s() || u()) }, onTrigger: function (t, e) { h(e) && (q = { clientX: e.clientX, clientY: e.clientY }), o = "focus" === e.type }, onHidden: function () { t.props.followCursor && (c(), p(), i = !0) } } } }; var K = { name: "inlinePositioning", defaultValue: !1, fn: function (t) { var e, n = t.reference; var r = -1, o = !1, i = [], a = { name: "tippyInlinePositioning", enabled: !0, phase: "afterWrite", fn: function (o) { var a = o.state; t.props.inlinePositioning && (-1 !== i.indexOf(a.placement) && (i = []), e !== a.placement && -1 === i.indexOf(a.placement) && (i.push(a.placement), t.setProps({ getReferenceClientRect: function () { return function (t) { return function (t, e, n, r) { if (n.length < 2 || null === t) return e; if (2 === n.length && r >= 0 && n[0].left > n[1].right) return n[r] || e; switch (t) { case "top": case "bottom": var o = n[0], i = n[n.length - 1], a = "top" === t, s = o.top, u = i.bottom, p = a ? o.left : i.left, c = a ? o.right : i.right; return { top: s, bottom: u, left: p, right: c, width: c - p, height: u - s }; case "left": case "right": var f = Math.min.apply(Math, n.map((function (t) { return t.left }))), l = Math.max.apply(Math, n.map((function (t) { return t.right }))), d = n.filter((function (e) { return "left" === t ? e.left === f : e.right === l })), v = d[0].top, m = d[d.length - 1].bottom; return { top: v, bottom: m, left: f, right: l, width: l - f, height: m - v }; default: return e } }(l(t), n.getBoundingClientRect(), d(n.getClientRects()), r) }(a.placement) } })), e = a.placement) } }; function s() { var e; o || (e = function (t, e) { var n; return { popperOptions: Object.assign({}, t.popperOptions, { modifiers: [].concat(((null == (n = t.popperOptions) ? void 0 : n.modifiers) || []).filter((function (t) { return t.name !== e.name })), [e]) }) } }(t.props, a), o = !0, t.setProps(e), o = !1) } return { onCreate: s, onAfterUpdate: s, onTrigger: function (e, n) { if (h(n)) { var o = d(t.reference.getClientRects()), i = o.find((function (t) { return t.left - 2 <= n.clientX && t.right + 2 >= n.clientX && t.top - 2 <= n.clientY && t.bottom + 2 >= n.clientY })), a = o.indexOf(i); r = a > -1 ? a : r } }, onHidden: function () { r = -1 } } } }; var Q = { name: "sticky", defaultValue: !1, fn: function (t) { var e = t.reference, n = t.popper; function r(e) { return !0 === t.props.sticky || t.props.sticky === e } var o = null, i = null; function a() { var s = r("reference") ? (t.popperInstance ? t.popperInstance.state.elements.reference : e).getBoundingClientRect() : null, u = r("popper") ? n.getBoundingClientRect() : null; (s && Z(o, s) || u && Z(i, u)) && t.popperInstance && t.popperInstance.update(), o = s, i = u, t.state.isMounted && requestAnimationFrame(a) } return { onMount: function () { t.props.sticky && a() } } } }; function Z(t, e) { return !t || !e || (t.top !== e.top || t.right !== e.right || t.bottom !== e.bottom || t.left !== e.left) } return e && function (t) { var e = document.createElement("style"); e.textContent = t, e.setAttribute("data-tippy-stylesheet", ""); var n = document.head, r = document.querySelector("head>style,head>link"); r ? n.insertBefore(e, r) : n.appendChild(e) }('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'), F.setDefaultProps({ plugins: [Y, G, K, Q], render: N }), F.createSingleton = function (t, e) { var n; void 0 === e && (e = {}); var r, o = t, i = [], a = [], s = e.overrides, u = [], f = !1; function l() { a = o.map((function (t) { return c(t.props.triggerTarget || t.reference) })).reduce((function (t, e) { return t.concat(e) }), []) } function d() { i = o.map((function (t) { return t.reference })) } function v(t) { o.forEach((function (e) { t ? e.enable() : e.disable() })) } function g(t) { return o.map((function (e) { var n = e.setProps; return e.setProps = function (o) { n(o), e.reference === r && t.setProps(o) }, function () { e.setProps = n } })) } function h(t, e) { var n = a.indexOf(e); if (e !== r) { r = e; var u = (s || []).concat("content").reduce((function (t, e) { return t[e] = o[n].props[e], t }), {}); t.setProps(Object.assign({}, u, { getReferenceClientRect: "function" == typeof u.getReferenceClientRect ? u.getReferenceClientRect : function () { var t; return null == (t = i[n]) ? void 0 : t.getBoundingClientRect() } })) } } v(!1), d(), l(); var b = { fn: function () { return { onDestroy: function () { v(!0) }, onHidden: function () { r = null }, onClickOutside: function (t) { t.props.showOnCreate && !f && (f = !0, r = null) }, onShow: function (t) { t.props.showOnCreate && !f && (f = !0, h(t, i[0])) }, onTrigger: function (t, e) { h(t, e.currentTarget) } } } }, y = F(m(), Object.assign({}, p(e, ["overrides"]), { plugins: [b].concat(e.plugins || []), triggerTarget: a, popperOptions: Object.assign({}, e.popperOptions, { modifiers: [].concat((null == (n = e.popperOptions) ? void 0 : n.modifiers) || [], [W]) }) })), w = y.show; y.show = function (t) { if (w(), !r && null == t) return h(y, i[0]); if (!r || null != t) { if ("number" == typeof t) return i[t] && h(y, i[t]); if (o.indexOf(t) >= 0) { var e = t.reference; return h(y, e) } return i.indexOf(t) >= 0 ? h(y, t) : void 0 } }, y.showNext = function () { var t = i[0]; if (!r) return y.show(0); var e = i.indexOf(r); y.show(i[e + 1] || t) }, y.showPrevious = function () { var t = i[i.length - 1]; if (!r) return y.show(t); var e = i.indexOf(r), n = i[e - 1] || t; y.show(n) }; var x = y.setProps; return y.setProps = function (t) { s = t.overrides || s, x(t) }, y.setInstances = function (t) { v(!0), u.forEach((function (t) { return t() })), o = t, v(!1), d(), l(), u = g(y), y.setProps({ triggerTarget: a }) }, u = g(y), y }, F.delegate = function (t, e) { var n = [], o = [], i = !1, a = e.target, s = p(e, ["target"]), u = Object.assign({}, s, { trigger: "manual", touch: !1 }), f = Object.assign({ touch: R.touch }, s, { showOnCreate: !0 }), l = F(t, u); function d(t) { if (t.target && !i) { var n = t.target.closest(a); if (n) { var r = n.getAttribute("data-tippy-trigger") || e.trigger || R.trigger; if (!n._tippy && !("touchstart" === t.type && "boolean" == typeof f.touch || "touchstart" !== t.type && r.indexOf(X[t.type]) < 0)) { var s = F(n, f); s && (o = o.concat(s)) } } } } function v(t, e, r, o) { void 0 === o && (o = !1), t.addEventListener(e, r, o), n.push({ node: t, eventType: e, handler: r, options: o }) } return c(l).forEach((function (t) { var e = t.destroy, a = t.enable, s = t.disable; t.destroy = function (t) { void 0 === t && (t = !0), t && o.forEach((function (t) { t.destroy() })), o = [], n.forEach((function (t) { var e = t.node, n = t.eventType, r = t.handler, o = t.options; e.removeEventListener(n, r, o) })), n = [], e() }, t.enable = function () { a(), o.forEach((function (t) { return t.enable() })), i = !1 }, t.disable = function () { s(), o.forEach((function (t) { return t.disable() })), i = !0 }, function (t) { var e = t.reference; v(e, "touchstart", d, r), v(e, "mouseover", d), v(e, "focusin", d), v(e, "click", d) }(t) })), l }, F.hideAll = function (t) { var e = void 0 === t ? {} : t, n = e.exclude, r = e.duration; _.forEach((function (t) { var e = !1; if (n && (e = b(n) ? t.reference === n : t.popper === n.popper), !e) { var o = t.props.duration; t.setProps({ duration: r }), t.hide(), t.state.isDestroyed || t.setProps({ duration: o }) } })) }, F.roundArrow = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>', F }));); //# sourceMappingURL=tippy-bundle.umd.min.js.map } var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow: function(instance) { get_div($(link), instance); } }); }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function($div){instance.setContent($div[0]);}); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/township/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ 2d8260340532c4c874e9e027a7f7936c9e33a6a4 774 773 2022-05-23T09:45:37Z 1381806 391 javascript text/javascript /* <nowiki> ← 避免被归类为有脚本错误的页面*/ $(function () { if (!['view', 'submit'].includes(mw.config.get('wgAction'))) return; var TOOLTIP_CACHE_BLOCK_ID = 'bili-tippy-cache-block'; if (document.getElementById(TOOLTIP_CACHE_BLOCK_ID)) return; /* 避免重复调用 */ $.getScript("index.php?title=用户:1381806/script/popper.js&action=raw&ctype=text/javascript", () => $.getScript("index.php?title=用户:1381806/script/tippy.js&action=raw&ctype=text/javascript", () => { var TOOLTIP_CACHE_BLOCK = $(); var Link_CLASS_NAME = 'bili-tippy'; var CACHE_TIME = 3600; // 解析内容保存在服务器和本地的缓存时间,单位是秒,如果内容不经常改的话,可以设长一些减少服务器压力,增加读取速度 var actions = {}; actions.replace = function (block) { // 提取块中的第一个<a>的地址,并将整个块替换为<a> var inner_link = block.querySelector('a[href]'); // 获取块内的第一个a,获取其href和title,然后移除 if (!inner_link) return block; var link = document.createElement('a'); link.setAttribute('href', inner_link.getAttribute('href')); if (inner_link.innerHTML.trim() !== "") { var span = document.createElement('span'); span.innerHTML = inner_link.innerHTML; inner_link.parentElement.insertBefore(span, inner_link); } inner_link.remove(); var attrs = block.attributes; for (var i = attrs.length - 1; i >= 0; i--) { // 转移各项属性 var attr = attrs[i]; block.removeAttributeNode(attr); link.setAttributeNode(attr); } link.innerHTML = block.innerHTML; block.parentElement.insertBefore(link, block); // 取代位置 block.remove(); return link; }; actions.tippy = function (link) { tippy(link, { content: '加载中…', theme: 'light', allowHTML: true, arrow: false, followCursor: false, interactive: true, trigger: "click", hideOnClick: true, inlinePositioning: true, maxWidth: 'none', onShow(instance) { get_div($(link), instance); } }); }; actions.init = function (range) { // 添加缓存浮层的区域 if (TOOLTIP_CACHE_BLOCK.length === 0) { $("body").append('<div id="' + TOOLTIP_CACHE_BLOCK_ID + '"></div>'); TOOLTIP_CACHE_BLOCK = $('#' + TOOLTIP_CACHE_BLOCK_ID); } // 为所有浮层添加事件 $(range).find('.' + Link_CLASS_NAME).addBack('.' + Link_CLASS_NAME).each(function () { actions.tippy(actions.replace(this)); }); }; actions.init(document.getElementById('mw-content-text')); // 监听dom变动,为新插入的tt注册事件 new MutationObserver(function (mutationsList) { mutationsList.forEach(function (mutation) { if (mutation.addedNodes) mutation.addedNodes.forEach(actions.init); }); }).observe(document.getElementById('mw-content-text'), { childList: true, // 监视节点增删事件 subtree: true // 包含所有后代节点(而不只是子节点) }); function get_div($link, instance) { var tt_type = get_data($link, 'type'); var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $(document.getElementById(get_div_id(tt_type, tt_name))); if ($div.length === 0) { $div = new_div($link, function ($div) { instance.setContent($div[0]); }); } return $div; } function get_div_id(type, name) { return encodeURIComponent('tt-' + type + '-' + name).replace(/%/g, '.').replace(/[~'!()*]/g, '_'); } function get_data($node, name) { return $node.attr("data-" + name) || ""; } // 生成浮层 function new_div($link, callback) { callback = callback || function () { }; var tt_type = get_data($link, 'type'); if (tt_type === 'child') { $link.attr('data-name', Math.random().toString().replace('0.', '')); } var tt_name = get_data($link, 'name').replace(' ', '_'); var $div = $('<div></div>'); $div.attr('id', get_div_id(tt_type, tt_name)).addClass('bili-tippy-cache'); // 可以为每种type的浮层,写不同的占位文本 // 如果浮层内容简单,也可以直接将其内容使用js生成 switch (tt_type) { // 可以写多种类型 // ★添加类型时,需要在此处添加新的case来为不同类型指定未加载前的占位代码 // case 'test': // ... // break; case 'raw': $div.text(tt_name); break; case 'child': $link.children('.tt-child').show().appendTo($div); break; } $div.appendTo(TOOLTIP_CACHE_BLOCK); // 异步读取模板解析结果 // 如果提示框内容比较简单,则可以在上面用js直接生成,不需要在此处配置 var wikitext = ''; switch (tt_type.slice(0, 1)) { case '@': // 模板 var template_name = tt_type.slice(1); wikitext = '{{' + template_name + '|' + tt_name + '}}'; // 调用tt_type对应的模板,参数为tt_name break; case '$': // 模块 var module_name = tt_type.slice(1); wikitext = '{{#invoke:' + module_name + '|tooltip|' + tt_name + '}}'; // 调用tt_type对应模块的tooltip方法,参数为tt_name break; default: switch (tt_type) { case 'test': wikitext = '{{#if:1|test|' + tt_name + '}}'; break; case 'wikitext': wikitext = tt_name; break; } } if (wikitext) { $div.text('加载中...'); load_wikitext(wikitext, $div).then(callback); } else { callback(); } return $div; } // 根据wikitext生成浮层内容 function load_wikitext(wikitext, $div, again) { // 文档:https://wiki.biligame.com/wiki/api.php?action=help&modules=parse return $.get('/township/api.php', { action: "parse", // 解析 format: "json", // 返回内容的格式 disablelimitreport: true, // 不返回使用内存、时间信息 prop: "text", // 返回解析后的文本 contentmodel: "wikitext", // 内容模型 smaxage: CACHE_TIME, maxage: CACHE_TIME, text: wikitext, // 待解析文本 _: mw.config.get('debug') ? Date.now() : null // 调试时不使用缓存 }).then(function (result) { if (result && result.parse && result.parse.text) { $div.html(result.parse.text['*']); return $div; } else { throw result; } })['catch'](function (error) { // 辣鸡解析器,不让我直接.catch if (again) { $div.text('读取失败'); console.log('获取"' + wikitext + '"失败', error); } else { $div.text('再次尝试...'); return load_wikitext(wikitext, $div, true); } }); } })) }) /* <nowiki> ← 避免被归类为有脚本错误的页面*/ e677a96379f97186d281fac2cf517bf0c3eb7031 MediaWiki:Common.js 8 33 767 554 2022-05-22T04:33:16Z 1381806 391 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ $('.resourceLoader').each(function () { var $x = $(this); var text = $.trim($x.text()); if (!text) return; //加载模块 if ($x.data('isModule') === true) return mw.loader.load(text); //自动补充MediaWiki命名空间 var ns = text.match('^.*?:'); if (!ns) text = 'MediaWiki:' + text; //加载CSS样式表 var mime = ($x.data('mime') || "text/javascript").toLowerCase(); if (mime == "text/css") { if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com/township/index.php?title=" + text + "&action=raw&ctype=text/css", "text/css"); } //加载JS脚本 if (ns && ns[0].toLowerCase() !== 'mediawiki:') { return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本'); } if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com/township/index.php?title=" + text + "&action=raw&ctype=text/javascript", "text/javascript"); }); cbe0e6511760249eeecbea53f6bd8c71f5981211 768 767 2022-05-22T05:34:37Z 1381806 391 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ $(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))(); 82379acd2b4867df4d406bf9e5aeedfe8d28b72d 769 768 2022-05-22T05:36:13Z 1381806 391 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ // $(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))(); de89bb5ded60f95034176b4c31ac275fc92c1d6c 775 769 2022-05-23T09:46:27Z 1381806 391 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ $(()=>mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"))(); 82379acd2b4867df4d406bf9e5aeedfe8d28b72d 776 775 2022-05-23T11:29:12Z 1381806 391 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"); 1631ae778954103f4d23ab552788784497630302 782 776 2023-04-13T04:11:44Z 13253902 7 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"); //编辑器插件SmartClick引入 //编辑器插件SmartClick引入 $(function(){ mw.loader.load("//wiki.biligame.com/umamusume/index.php?title=MediaWiki:SmartClick.js&action=raw&ctype=text/javascript", "text/javascript"); console.log("SmartClick.js initialized!"); }); 347ecac2125607599a78856b6c1c537085e4c37b 808 782 2023-04-23T12:16:51Z 13253902 7 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"); 1631ae778954103f4d23ab552788784497630302 用户:1381806/script/popper.js 2 351 771 2022-05-23T06:19:58Z 1381806 391 创建页面,内容为“/** * @popperjs/core v2.11.5 - MIT License */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).…” javascript text/javascript /** * @popperjs/core v2.11.5 - MIT License */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(e,t){void 0===t&&(t=!1);var n=e.getBoundingClientRect(),o=1,i=1;if(r(e)&&t){var a=e.offsetHeight,f=e.offsetWidth;f>0&&(o=s(n.width)/f||1),a>0&&(i=s(n.height)/a||1)}return{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function c(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function p(e){return e?(e.nodeName||"").toLowerCase():null}function u(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function l(e){return f(u(e)).left+c(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function h(e){var t=d(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function m(e,n,o){void 0===o&&(o=!1);var i,a,d=r(n),m=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),v=u(n),g=f(e,m),y={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(d||!d&&!o)&&(("body"!==p(n)||h(v))&&(y=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:c(i)),r(n)?((b=f(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):v&&(b.x=l(v))),{x:g.left+y.scrollLeft-b.x,y:g.top+y.scrollTop-b.y,width:g.width,height:g.height}}function v(e){var t=f(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function g(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||u(e)}function y(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:r(e)&&h(e)?e:y(g(e))}function b(e,n){var r;void 0===n&&(n=[]);var o=y(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],h(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(b(g(s)))}function x(e){return["table","td","th"].indexOf(p(e))>=0}function w(e){return r(e)&&"fixed"!==d(e).position?e.offsetParent:null}function O(e){for(var n=t(e),i=w(e);i&&x(i)&&"static"===d(i).position;)i=w(i);return i&&("html"===p(i)||"body"===p(i)&&"static"===d(i).position)?n:i||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&r(e)&&"fixed"===d(e).position)return null;var n=g(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(p(n))<0;){var i=d(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var j="top",E="bottom",D="right",A="left",L="auto",P=[j,E,D,A],M="start",k="end",W="viewport",B="popper",H=P.reduce((function(e,t){return e.concat([t+"-"+M,t+"-"+k])}),[]),T=[].concat(P,[L]).reduce((function(e,t){return e.concat([t,t+"-"+M,t+"-"+k])}),[]),R=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function S(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function q(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function V(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function N(e,r){return r===W?V(function(e){var n=t(e),r=u(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,f=0;return o&&(i=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(s=o.offsetLeft,f=o.offsetTop)),{width:i,height:a,x:s+l(e),y:f}}(e)):n(r)?function(e){var t=f(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}(r):V(function(e){var t,n=u(e),r=c(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+l(e),p=-r.scrollTop;return"rtl"===d(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:p}}(u(e)))}function I(e,t,o){var s="clippingParents"===t?function(e){var t=b(g(e)),o=["absolute","fixed"].indexOf(d(e).position)>=0&&r(e)?O(e):e;return n(o)?t.filter((function(e){return n(e)&&q(e,o)&&"body"!==p(e)})):[]}(e):[].concat(t),f=[].concat(s,[o]),c=f[0],u=f.reduce((function(t,n){var r=N(e,n);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),N(e,c));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function _(e){return e.split("-")[1]}function F(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function U(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?_(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case j:t={x:s,y:n.y-r.height};break;case E:t={x:s,y:n.y+n.height};break;case D:t={x:n.x+n.width,y:f};break;case A:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?F(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case M:t[c]=t[c]-(n[p]/2-r[p]/2);break;case k:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function z(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function X(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function Y(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.boundary,s=void 0===a?"clippingParents":a,c=r.rootBoundary,p=void 0===c?W:c,l=r.elementContext,d=void 0===l?B:l,h=r.altBoundary,m=void 0!==h&&h,v=r.padding,g=void 0===v?0:v,y=z("number"!=typeof g?g:X(g,P)),b=d===B?"reference":B,x=e.rects.popper,w=e.elements[m?b:d],O=I(n(w)?w:w.contextElement||u(e.elements.popper),s,p),A=f(e.elements.reference),L=U({reference:A,element:x,strategy:"absolute",placement:i}),M=V(Object.assign({},x,L)),k=d===B?M:A,H={top:O.top-k.top+y.top,bottom:k.bottom-O.bottom+y.bottom,left:O.left-k.left+y.left,right:k.right-O.right+y.right},T=e.modifiersData.offset;if(d===B&&T){var R=T[i];Object.keys(H).forEach((function(e){var t=[D,E].indexOf(e)>=0?1:-1,n=[j,E].indexOf(e)>=0?"y":"x";H[e]+=R[n]*t}))}return H}var G={placement:"bottom",modifiers:[],strategy:"absolute"};function J(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function K(e){void 0===e&&(e={});var t=e,r=t.defaultModifiers,o=void 0===r?[]:r,i=t.defaultOptions,a=void 0===i?G:i;return function(e,t,r){void 0===r&&(r=a);var i,s,f={placement:"bottom",orderedModifiers:[],options:Object.assign({},G,a),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},c=[],p=!1,u={state:f,setOptions:function(r){var i="function"==typeof r?r(f.options):r;l(),f.options=Object.assign({},a,f.options,i),f.scrollParents={reference:n(e)?b(e):e.contextElement?b(e.contextElement):[],popper:b(t)};var s,p,d=function(e){var t=S(e);return R.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((s=[].concat(o,f.options.modifiers),p=s.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(p).map((function(e){return p[e]}))));return f.orderedModifiers=d.filter((function(e){return e.enabled})),f.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:f,name:t,instance:u,options:r}),a=function(){};c.push(i||a)}})),u.update()},forceUpdate:function(){if(!p){var e=f.elements,t=e.reference,n=e.popper;if(J(t,n)){f.rects={reference:m(t,O(n),"fixed"===f.options.strategy),popper:v(n)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach((function(e){return f.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<f.orderedModifiers.length;r++)if(!0!==f.reset){var o=f.orderedModifiers[r],i=o.fn,a=o.options,s=void 0===a?{}:a,c=o.name;"function"==typeof i&&(f=i({state:f,options:s,name:c,instance:u})||f)}else f.reset=!1,r=-1}}},update:(i=function(){return new Promise((function(e){u.forceUpdate(),e(f)}))},function(){return s||(s=new Promise((function(e){Promise.resolve().then((function(){s=void 0,e(i())}))}))),s}),destroy:function(){l(),p=!0}};if(!J(e,t))return u;function l(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(r).then((function(e){!p&&r.onFirstUpdate&&r.onFirstUpdate(e)})),u}}var Q={passive:!0};var Z={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,r=e.instance,o=e.options,i=o.scroll,a=void 0===i||i,s=o.resize,f=void 0===s||s,c=t(n.elements.popper),p=[].concat(n.scrollParents.reference,n.scrollParents.popper);return a&&p.forEach((function(e){e.addEventListener("scroll",r.update,Q)})),f&&c.addEventListener("resize",r.update,Q),function(){a&&p.forEach((function(e){e.removeEventListener("scroll",r.update,Q)})),f&&c.removeEventListener("resize",r.update,Q)}},data:{}};var $={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=U({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},ee={top:"auto",right:"auto",bottom:"auto",left:"auto"};function te(e){var n,r=e.popper,o=e.popperRect,i=e.placement,a=e.variation,f=e.offsets,c=e.position,p=e.gpuAcceleration,l=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=f.x,g=void 0===v?0:v,y=f.y,b=void 0===y?0:y,x="function"==typeof h?h({x:g,y:b}):{x:g,y:b};g=x.x,b=x.y;var w=f.hasOwnProperty("x"),L=f.hasOwnProperty("y"),P=A,M=j,W=window;if(l){var B=O(r),H="clientHeight",T="clientWidth";if(B===t(r)&&"static"!==d(B=u(r)).position&&"absolute"===c&&(H="scrollHeight",T="scrollWidth"),B=B,i===j||(i===A||i===D)&&a===k)M=E,b-=(m&&B===W&&W.visualViewport?W.visualViewport.height:B[H])-o.height,b*=p?1:-1;if(i===A||(i===j||i===E)&&a===k)P=D,g-=(m&&B===W&&W.visualViewport?W.visualViewport.width:B[T])-o.width,g*=p?1:-1}var R,S=Object.assign({position:c},l&&ee),C=!0===h?function(e){var t=e.x,n=e.y,r=window.devicePixelRatio||1;return{x:s(t*r)/r||0,y:s(n*r)/r||0}}({x:g,y:b}):{x:g,y:b};return g=C.x,b=C.y,p?Object.assign({},S,((R={})[M]=L?"0":"",R[P]=w?"0":"",R.transform=(W.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",R)):Object.assign({},S,((n={})[M]=L?b+"px":"",n[P]=w?g+"px":"",n.transform="",n))}var ne={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,f=void 0===s||s,c={placement:C(t.placement),variation:_(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,te(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:f})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,te(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var re={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},o=t.attributes[e]||{},i=t.elements[e];r(i)&&p(i)&&(Object.assign(i.style,n),Object.keys(o).forEach((function(e){var t=o[e];!1===t?i.removeAttribute(e):i.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var o=t.elements[e],i=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});r(o)&&p(o)&&(Object.assign(o.style,a),Object.keys(i).forEach((function(e){o.removeAttribute(e)})))}))}},requires:["computeStyles"]};var oe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=T.reduce((function(e,n){return e[n]=function(e,t,n){var r=C(e),o=[A,j].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[A,D].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},ie={left:"right",right:"left",bottom:"top",top:"bottom"};function ae(e){return e.replace(/left|right|bottom|top/g,(function(e){return ie[e]}))}var se={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return se[e]}))}function ce(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?T:f,p=_(r),u=p?s?H:H.filter((function(e){return _(e)===p})):P,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=Y(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,g=C(v),y=f||(g===v||!h?[ae(v)]:function(e){if(C(e)===L)return[];var t=ae(e);return[fe(e),t,fe(t)]}(v)),b=[v].concat(y).reduce((function(e,n){return e.concat(C(n)===L?ce(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,P=!0,k=b[0],W=0;W<b.length;W++){var B=b[W],H=C(B),T=_(B)===M,R=[j,E].indexOf(H)>=0,S=R?"width":"height",q=Y(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),V=R?T?D:A:T?E:j;x[S]>w[S]&&(V=ae(V));var N=ae(V),I=[];if(i&&I.push(q[H]<=0),s&&I.push(q[V]<=0,q[N]<=0),I.every((function(e){return e}))){k=B,P=!1;break}O.set(B,I)}if(P)for(var F=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return k=t,"break"},U=h?3:1;U>0;U--){if("break"===F(U))break}t.placement!==k&&(t.modifiersData[r]._skip=!0,t.placement=k,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ue(e,t,n){return i(e,a(t,n))}var le={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,g=n.tetherOffset,y=void 0===g?0:g,b=Y(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=_(t.placement),L=!w,P=F(x),k="x"===P?"y":"x",W=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,q={x:0,y:0};if(W){if(s){var V,N="y"===P?j:A,I="y"===P?E:D,U="y"===P?"height":"width",z=W[P],X=z+b[N],G=z-b[I],J=m?-H[U]/2:0,K=w===M?B[U]:H[U],Q=w===M?-H[U]:-B[U],Z=t.elements.arrow,$=m&&Z?v(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=ue(0,B[U],$[U]),oe=L?B[U]/2-J-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=L?-B[U]/2+J+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&O(t.elements.arrow),se=ae?"y"===P?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(V=null==S?void 0:S[P])?V:0,ce=z+ie-fe,pe=ue(m?a(X,z+oe-fe-se):X,z,m?i(G,ce):G);W[P]=pe,q[P]=pe-z}if(c){var le,de="x"===P?j:A,he="x"===P?E:D,me=W[k],ve="y"===k?"height":"width",ge=me+b[de],ye=me-b[he],be=-1!==[j,A].indexOf(x),xe=null!=(le=null==S?void 0:S[k])?le:0,we=be?ge:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ye,je=m&&be?function(e,t,n){var r=ue(e,t,n);return r>n?n:r}(we,me,Oe):ue(m?we:ge,me,m?Oe:ye);W[k]=je,q[k]=je-me}t.modifiersData[r]=q}},requiresIfExists:["offset"]};var de={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=F(s),c=[A,D].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return z("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:X(e,P))}(o.padding,n),u=v(i),l="y"===f?j:A,d="y"===f?E:D,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],g=O(i),y=g?"y"===f?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],L=y/2-u[c]/2+b,M=ue(x,L,w),k=f;n.modifiersData[r]=((t={})[k]=M,t.centerOffset=M-L,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&q(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function he(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function me(e){return[j,D,E,A].some((function(t){return e[t]>=0}))}var ve={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=Y(t,{elementContext:"reference"}),s=Y(t,{altBoundary:!0}),f=he(a,r),c=he(s,o,i),p=me(f),u=me(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},ge=K({defaultModifiers:[Z,$,ne,re]}),ye=[Z,$,ne,re,oe,pe,le,de,ve],be=K({defaultModifiers:ye});e.applyStyles=re,e.arrow=de,e.computeStyles=ne,e.createPopper=be,e.createPopperLite=ge,e.defaultModifiers=ye,e.detectOverflow=Y,e.eventListeners=Z,e.flip=pe,e.hide=ve,e.offset=oe,e.popperGenerator=K,e.popperOffsets=$,e.preventOverflow=le,Object.defineProperty(e,"__esModule",{value:!0})})); 884325b71aa231851d8c2aa54aeb452ef2347c42 用户:1381806/script/tippy.js 2 352 772 2022-05-23T06:20:51Z 1381806 391 创建页面,内容为“!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isAr…” javascript text/javascript !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function u(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function p(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(t){return Object.keys(t).reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})}function m(){return document.createElement("div")}function g(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function h(t){return a(t,"MouseEvent")}function b(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function y(t){return g(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function w(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function E(t){var e,n=c(t)[0];return null!=n&&null!=(e=n.ownerDocument)&&e.body?n.ownerDocument:document}function O(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}function C(t,e){for(var n=e;n;){var r;if(t.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var T={isTouch:!1},A=0;function L(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",D))}function D(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",D)),A=t}function k(){var t=document.activeElement;if(b(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var R=Object.assign({appendTo:o,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),P=Object.keys(R);function j(t){var e=(t.plugins||[]).reduce((function(e,n){var r,o=n.name,i=n.defaultValue;o&&(e[o]=void 0!==t[o]?t[o]:null!=(r=R[o])?r:i);return e}),{});return Object.assign({},t,e)}function M(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(j(Object.assign({},R,{plugins:e}))):P).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function V(t,e){t.innerHTML=e}function I(t){var e=m();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",g(t)?e.appendChild(t):V(e,t)),e}function S(t,e){g(e.content)?(V(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?V(t,e.content):t.textContent=e.content)}function B(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function N(t){var e=m(),n=m();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=m();function o(n,r){var o=B(e),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||S(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(I(r.arrow))):i.appendChild(I(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),S(r,t.props),e.appendChild(n),n.appendChild(r),o(t.props,t.props),{popper:e,onUpdate:o}}N.$$tippy=!0;var H=1,U=[],_=[];function z(e,a){var p,g,b,y,A,L,D,k,P=M(e,Object.assign({},R,j(v(a)))),V=!1,I=!1,S=!1,N=!1,z=[],F=u(wt,P.interactiveDebounce),W=H++,X=(k=P.plugins).filter((function(t,e){return k.indexOf(t)===e})),Y={id:W,reference:e,popper:m(),popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:X,clearDelayTimeouts:function(){clearTimeout(p),clearTimeout(g),cancelAnimationFrame(b)},setProps:function(t){if(Y.state.isDestroyed)return;at("onBeforeUpdate",[Y,t]),bt();var n=Y.props,r=M(e,Object.assign({},n,v(t),{ignoreAttributes:!0}));Y.props=r,ht(),n.interactiveDebounce!==r.interactiveDebounce&&(pt(),F=u(wt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");ut(),it(),J&&J(n,r);Y.popperInstance&&(Ct(),At().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));at("onAfterUpdate",[Y,t])},setContent:function(t){Y.setProps({content:t})},show:function(){var t=Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=T.isTouch&&!Y.props.touch,a=i(Y.props.duration,0,R.duration);if(t||e||n||r)return;if(et().hasAttribute("disabled"))return;if(at("onShow",[Y],!1),!1===Y.props.onShow(Y))return;Y.state.isVisible=!0,tt()&&($.style.visibility="visible");it(),dt(),Y.state.isMounted||($.style.transition="none");if(tt()){var u=rt(),p=u.box,c=u.content;w([p,c],0)}L=function(){var t;if(Y.state.isVisible&&!N){if(N=!0,$.offsetHeight,$.style.transition=Y.props.moveTransition,tt()&&Y.props.animation){var e=rt(),n=e.box,r=e.content;w([n,r],a),x([n,r],"visible")}st(),ut(),f(_,Y),null==(t=Y.popperInstance)||t.forceUpdate(),at("onMount",[Y]),Y.props.animation&&tt()&&function(t,e){mt(t,e)}(a,(function(){Y.state.isShown=!0,at("onShown",[Y])}))}},function(){var t,e=Y.props.appendTo,n=et();t=Y.props.interactive&&e===o||"parent"===e?n.parentNode:s(e,[n]);t.contains($)||t.appendChild($);Y.state.isMounted=!0,Ct()}()},hide:function(){var t=!Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=i(Y.props.duration,1,R.duration);if(t||e||n)return;if(at("onHide",[Y],!1),!1===Y.props.onHide(Y))return;Y.state.isVisible=!1,Y.state.isShown=!1,N=!1,V=!1,tt()&&($.style.visibility="hidden");if(pt(),vt(),it(!0),tt()){var o=rt(),a=o.box,s=o.content;Y.props.animation&&(w([a,s],r),x([a,s],"hidden"))}st(),ut(),Y.props.animation?tt()&&function(t,e){mt(t,(function(){!Y.state.isVisible&&$.parentNode&&$.parentNode.contains($)&&e()}))}(r,Y.unmount):Y.unmount()},hideWithInteractivity:function(t){nt().addEventListener("mousemove",F),f(U,F),F(t)},enable:function(){Y.state.isEnabled=!0},disable:function(){Y.hide(),Y.state.isEnabled=!1},unmount:function(){Y.state.isVisible&&Y.hide();if(!Y.state.isMounted)return;Tt(),At().forEach((function(t){t._tippy.unmount()})),$.parentNode&&$.parentNode.removeChild($);_=_.filter((function(t){return t!==Y})),Y.state.isMounted=!1,at("onHidden",[Y])},destroy:function(){if(Y.state.isDestroyed)return;Y.clearDelayTimeouts(),Y.unmount(),bt(),delete e._tippy,Y.state.isDestroyed=!0,at("onDestroy",[Y])}};if(!P.render)return Y;var q=P.render(Y),$=q.popper,J=q.onUpdate;$.setAttribute("data-tippy-root",""),$.id="tippy-"+Y.id,Y.popper=$,e._tippy=Y,$._tippy=Y;var G=X.map((function(t){return t.fn(Y)})),K=e.hasAttribute("aria-expanded");return ht(),ut(),it(),at("onCreate",[Y]),P.showOnCreate&&Lt(),$.addEventListener("mouseenter",(function(){Y.props.interactive&&Y.state.isVisible&&Y.clearDelayTimeouts()})),$.addEventListener("mouseleave",(function(){Y.props.interactive&&Y.props.trigger.indexOf("mouseenter")>=0&&nt().addEventListener("mousemove",F)})),Y;function Q(){var t=Y.props.touch;return Array.isArray(t)?t:[t,0]}function Z(){return"hold"===Q()[0]}function tt(){var t;return!(null==(t=Y.props.render)||!t.$$tippy)}function et(){return D||e}function nt(){var t=et().parentNode;return t?E(t):document}function rt(){return B($)}function ot(t){return Y.state.isMounted&&!Y.state.isVisible||T.isTouch||y&&"focus"===y.type?0:i(Y.props.delay,t?0:1,R.delay)}function it(t){void 0===t&&(t=!1),$.style.pointerEvents=Y.props.interactive&&!t?"":"none",$.style.zIndex=""+Y.props.zIndex}function at(t,e,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[t]&&n[t].apply(n,e)})),n)&&(r=Y.props)[t].apply(r,e)}function st(){var t=Y.props.aria;if(t.content){var n="aria-"+t.content,r=$.id;c(Y.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(Y.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var o=e&&e.replace(r,"").trim();o?t.setAttribute(n,o):t.removeAttribute(n)}}))}}function ut(){!K&&Y.props.aria.expanded&&c(Y.props.triggerTarget||e).forEach((function(t){Y.props.interactive?t.setAttribute("aria-expanded",Y.state.isVisible&&t===et()?"true":"false"):t.removeAttribute("aria-expanded")}))}function pt(){nt().removeEventListener("mousemove",F),U=U.filter((function(t){return t!==F}))}function ct(t){if(!T.isTouch||!S&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!Y.props.interactive||!C($,n)){if(c(Y.props.triggerTarget||e).some((function(t){return C(t,n)}))){if(T.isTouch)return;if(Y.state.isVisible&&Y.props.trigger.indexOf("click")>=0)return}else at("onClickOutside",[Y,t]);!0===Y.props.hideOnClick&&(Y.clearDelayTimeouts(),Y.hide(),I=!0,setTimeout((function(){I=!1})),Y.state.isMounted||vt())}}}function ft(){S=!0}function lt(){S=!1}function dt(){var t=nt();t.addEventListener("mousedown",ct,!0),t.addEventListener("touchend",ct,r),t.addEventListener("touchstart",lt,r),t.addEventListener("touchmove",ft,r)}function vt(){var t=nt();t.removeEventListener("mousedown",ct,!0),t.removeEventListener("touchend",ct,r),t.removeEventListener("touchstart",lt,r),t.removeEventListener("touchmove",ft,r)}function mt(t,e){var n=rt().box;function r(t){t.target===n&&(O(n,"remove",r),e())}if(0===t)return e();O(n,"remove",A),O(n,"add",r),A=r}function gt(t,n,r){void 0===r&&(r=!1),c(Y.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),z.push({node:e,eventType:t,handler:n,options:r})}))}function ht(){var t;Z()&&(gt("touchstart",yt,{passive:!0}),gt("touchend",xt,{passive:!0})),(t=Y.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(gt(t,yt),t){case"mouseenter":gt("mouseleave",xt);break;case"focus":gt(n?"focusout":"blur",Et);break;case"focusin":gt("focusout",Et)}}))}function bt(){z.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),z=[]}function yt(t){var e,n=!1;if(Y.state.isEnabled&&!Ot(t)&&!I){var r="focus"===(null==(e=y)?void 0:e.type);y=t,D=t.currentTarget,ut(),!Y.state.isVisible&&h(t)&&U.forEach((function(e){return e(t)})),"click"===t.type&&(Y.props.trigger.indexOf("mouseenter")<0||V)&&!1!==Y.props.hideOnClick&&Y.state.isVisible?n=!0:Lt(t),"click"===t.type&&(V=!n),n&&!r&&Dt(t)}}function wt(t){var e=t.target,n=et().contains(e)||$.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,o=t.popperState,i=t.props.interactiveBorder,a=l(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,p="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+u>i,v=r-e.bottom-p>i,m=e.left-n+c>i,g=n-e.right-f>i;return d||v||m||g}))}(At().concat($).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:P}:null})).filter(Boolean),t)&&(pt(),Dt(t))}function xt(t){Ot(t)||Y.props.trigger.indexOf("click")>=0&&V||(Y.props.interactive?Y.hideWithInteractivity(t):Dt(t))}function Et(t){Y.props.trigger.indexOf("focusin")<0&&t.target!==et()||Y.props.interactive&&t.relatedTarget&&$.contains(t.relatedTarget)||Dt(t)}function Ot(t){return!!T.isTouch&&Z()!==t.type.indexOf("touch")>=0}function Ct(){Tt();var n=Y.props,r=n.popperOptions,o=n.placement,i=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,u=tt()?B($).arrow:null,p=a?{getBoundingClientRect:a,contextElement:a.contextElement||et()}:e,c=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(tt()){var n=rt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];tt()&&u&&c.push({name:"arrow",options:{element:u,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),Y.popperInstance=t.createPopper(p,$,Object.assign({},r,{placement:o,onFirstUpdate:L,modifiers:c}))}function Tt(){Y.popperInstance&&(Y.popperInstance.destroy(),Y.popperInstance=null)}function At(){return d($.querySelectorAll("[data-tippy-root]"))}function Lt(t){Y.clearDelayTimeouts(),t&&at("onTrigger",[Y,t]),dt();var e=ot(!0),n=Q(),r=n[0],o=n[1];T.isTouch&&"hold"===r&&o&&(e=o),e?p=setTimeout((function(){Y.show()}),e):Y.show()}function Dt(t){if(Y.clearDelayTimeouts(),at("onUntrigger",[Y,t]),Y.state.isVisible){if(!(Y.props.trigger.indexOf("mouseenter")>=0&&Y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&V)){var e=ot(!1);e?g=setTimeout((function(){Y.state.isVisible&&Y.hide()}),e):b=requestAnimationFrame((function(){Y.hide()}))}}else vt()}}function F(t,e){void 0===e&&(e={});var n=R.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",L,r),window.addEventListener("blur",k);var o=Object.assign({},e,{plugins:n}),i=y(t).reduce((function(t,e){var n=e&&z(e,o);return n&&t.push(n),t}),[]);return g(t)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(t){Object.keys(t).forEach((function(e){R[e]=t[e]}))},F.currentInput=T;var W=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(null==(e=t.props.render)||!e.$$tippy)return{};var n=B(t.popper),r=n.box,o=n.content,i=t.props.animateFill?function(){var t=m();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));o.style.transitionDelay=Math.round(e/10)+"ms",i.style.transitionDuration=t,x([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&x([i],"hidden")}}}};var q={clientX:0,clientY:0},$=[];function J(t){var e=t.clientX,n=t.clientY;q={clientX:e,clientY:n}}var G={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=E(t.props.triggerTarget||e),r=!1,o=!1,i=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){n.addEventListener("mousemove",f)}function p(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),o=t.props.followCursor,i=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),u=i-s.left,p=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=t.left+u,r=t.top+p);var s="horizontal"===o?t.top:r,c="vertical"===o?t.right:n,f="horizontal"===o?t.bottom:r,l="vertical"===o?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&($.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",J)}(n))}function d(){0===($=$.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",J)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!t.state.isMounted||o||s()||u()):(p(),c()))},onMount:function(){t.props.followCursor&&!o&&(i&&(f(q),i=!1),s()||u())},onTrigger:function(t,e){h(e)&&(q={clientX:e.clientX,clientY:e.clientY}),o="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),p(),i=!0)}}}};var K={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;t.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),e!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===t,s=o.top,u=i.bottom,p=a?o.left:i.left,c=a?o.right:i.right;return{top:s,bottom:u,left:p,right:c,width:c-p,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(a.placement)}})),e=a.placement)}};function s(){var e;o||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,a),o=!0,t.setProps(e),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(e,n){if(h(n)){var o=d(t.reference.getClientRects()),i=o.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var Q={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var o=null,i=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Z(o,s)||u&&Z(i,u))&&t.popperInstance&&t.popperInstance.update(),o=s,i=u,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function Z(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),F.setDefaultProps({plugins:[Y,G,K,Q],render:N}),F.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,o=t,i=[],a=[],s=e.overrides,u=[],f=!1;function l(){a=o.map((function(t){return c(t.props.triggerTarget||t.reference)})).reduce((function(t,e){return t.concat(e)}),[])}function d(){i=o.map((function(t){return t.reference}))}function v(t){o.forEach((function(e){t?e.enable():e.disable()}))}function g(t){return o.map((function(e){var n=e.setProps;return e.setProps=function(o){n(o),e.reference===r&&t.setProps(o)},function(){e.setProps=n}}))}function h(t,e){var n=a.indexOf(e);if(e!==r){r=e;var u=(s||[]).concat("content").reduce((function(t,e){return t[e]=o[n].props[e],t}),{});t.setProps(Object.assign({},u,{getReferenceClientRect:"function"==typeof u.getReferenceClientRect?u.getReferenceClientRect:function(){var t;return null==(t=i[n])?void 0:t.getBoundingClientRect()}}))}}v(!1),d(),l();var b={fn:function(){return{onDestroy:function(){v(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!f&&(f=!0,h(t,i[0]))},onTrigger:function(t,e){h(t,e.currentTarget)}}}},y=F(m(),Object.assign({},p(e,["overrides"]),{plugins:[b].concat(e.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(t){if(w(),!r&&null==t)return h(y,i[0]);if(!r||null!=t){if("number"==typeof t)return i[t]&&h(y,i[t]);if(o.indexOf(t)>=0){var e=t.reference;return h(y,e)}return i.indexOf(t)>=0?h(y,t):void 0}},y.showNext=function(){var t=i[0];if(!r)return y.show(0);var e=i.indexOf(r);y.show(i[e+1]||t)},y.showPrevious=function(){var t=i[i.length-1];if(!r)return y.show(t);var e=i.indexOf(r),n=i[e-1]||t;y.show(n)};var x=y.setProps;return y.setProps=function(t){s=t.overrides||s,x(t)},y.setInstances=function(t){v(!0),u.forEach((function(t){return t()})),o=t,v(!1),d(),l(),u=g(y),y.setProps({triggerTarget:a})},u=g(y),y},F.delegate=function(t,e){var n=[],o=[],i=!1,a=e.target,s=p(e,["target"]),u=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},s,{showOnCreate:!0}),l=F(t,u);function d(t){if(t.target&&!i){var n=t.target.closest(a);if(n){var r=n.getAttribute("data-tippy-trigger")||e.trigger||R.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&r.indexOf(X[t.type])<0)){var s=F(n,f);s&&(o=o.concat(s))}}}}function v(t,e,r,o){void 0===o&&(o=!1),t.addEventListener(e,r,o),n.push({node:t,eventType:e,handler:r,options:o})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&o.forEach((function(t){t.destroy()})),o=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),n=[],e()},t.enable=function(){a(),o.forEach((function(t){return t.enable()})),i=!1},t.disable=function(){s(),o.forEach((function(t){return t.disable()})),i=!0},function(t){var e=t.reference;v(e,"touchstart",d,r),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},F.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;_.forEach((function(t){var e=!1;if(n&&(e=b(n)?t.reference===n:t.popper===n.popper),!e){var o=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:o})}}))},F.roundArrow='<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>',F})); 3e3fec36da29dcdc814b441feb41a8e16bf8f654 首页 0 1 777 626 2022-06-28T04:15:14Z 13253902 7 wikitext text/x-wiki <!--页面开始--> __NOTOC__ <div class="container main"> <div class="row"> <!--以上3行必须存在请不要删减--> <!--以下开始是左侧8列的内容--> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> <!--轮播图开始--> <includeonly> <div id=biliCarousel1 class="carousel slide big-carousel" data-ride=carousel data-interval=5000 style="padding:0px"> <div class="carousel-inner"> <div class="item active">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--默认第1帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第2帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第3帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第4帧--> <div class="item">[[文件:申请创建WIKI.png|申请创建WIKI|link=WIKI申请页面]]</div><!--第5帧--> </div> <ol class="carousel-indicators"> <li data-target=#biliCarousel1 data-slide-to=0 class="active"></li><!--默认第1帧--> <li data-target=#biliCarousel1 data-slide-to=1></li><!--第2帧--> <li data-target=#biliCarousel1 data-slide-to=2></li><!--第3帧--> <li data-target=#biliCarousel1 data-slide-to=3></li><!--第4帧--> <li data-target=#biliCarousel1 data-slide-to=4></li><!--第5帧--> </ol> </div> </includeonly> <!--轮播图结束--> <!--角色块开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="ts-title-head">建造</div> <div class="ts-title-foot> <div class="ts-box"> {{首页建造图标|房屋|房屋}} {{首页建造图标|社区建筑|社区建筑}} {{首页建造图标|工厂|工厂}} {{首页建造图标|耕种|耕种}} {{首页建造图标|装饰物|装饰物}} {{首页建造图标|特殊|特殊}} </div> </div> <includeonly><div class="bili-divider"></div> <div class="bili-title-h2">物品</div> {{按钮|产品|产品}}</includeonly> </div> <!--词条块1结束--> <includeonly><!--词条块2开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">词条块2</div> <div class="bili-divider" style="background:#000000"></div> {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} {{按钮|实际的链接|显示的文字}} </div> <!--词条块2结束--></includeonly> <!--在左侧8列中再分出2列--> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> </div> <!--在左侧8列中再分出2列--> </div> <!--左侧8列的内容结束--> <!--以下开始是右侧4列的内容--> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <includeonly><!--链接块1开始--> <div class="game-introduction" style="margin-bottom:40px"> <div class="bili-title-h1">链接块1</div> <div class="bili-divider" style="background:#000000"></div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> <div class="bili-list-order" style="padding-bottom:5px">[[实际的链接|<span class="list-order-content">显示的文字</span>]] </div> </div> <!--链接块1结束--></includeonly> <!--关于WIKI开始--> <div class="ts-title-head">关于WIKI</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本WIKI是收集分享手游《Township》梦想<s>小</s>城镇有关的数据资料的百科平台。  WIKI现处于基础架设中,诚挚期盼各位大佬铁粉参与到WIKI的建设中来,一起完善WIKI。  本WIKI为开放编辑权限,任何人都可以在遵守 [https://wiki.biligame.com/wiki/WIKI%E7%A4%BE%E5%8C%BA%E8%A7%84%E5%88%99 BWIKI社区规则] 的前提下进行内容制作,违规者将会被封禁。<br><br>  站点内所涉及的公司名称、商标、产品等均为其各自所有者所有的资产,站点内使用仅供用于识别。站点内使用的所有游戏图片,游戏文案等其他素材,其版权为游戏权利方所有。<br><br>  如有异议请发邮件至:bwiki@bilibili.com 或联系客服QQ:1968897839<br><br> QQ🔰交流群:[https://jq.qq.com/?_wv=1027&k=mMQhXGGG 331872160] </span> ---- <p class="text-center">本WIKI遵循[https://creativecommons.org/licenses/by-nc-sa/3.0/ BY-NC-SA]协议。(特殊注明除外)</p> <div style="display: flex;justify-content: space-evenly;"><span class="glyphicon glyphicon-user"> [[特殊:用户列表|<b>{{NUMBEROFUSERS}}</b>]]</span><span class="glyphicon glyphicon-file" style=""> [[特殊:最近更改|<b>{{NUMBEROFPAGES}}</b>]]</span><span class="glyphicon glyphicon-pencil"> [[特殊:贡献得分|<b>{{NUMBEROFACTIVEUSERS}}</b>]]</span></div> </div> <!--关于WIKI结束--> <!--关于游戏开始--> <div class="ts-title-head" style="margin-top:24px;">关于游戏</div> <div class="ts-title-foot" style="padding:8px 20px;text-align:left;"> <span class="sidebar-content">  本游戏是由Playrix开发,国内由触控游戏代理运营的一款多平台模拟经营类游戏。 支持平台:Android、iOS、Windows、Mac 游戏开发商:[https://www.playrix.com/township/index.html Playrix] 国内运营商:[http://mxcz.coco.cn/ 触控游戏] </span> </div> <!--关于游戏结束--> </div> <!--右侧4列的内容结束--> </div> </div> <!--页面结束--> f799c71dd78610ad4a071e4aaf87eec54ae8dd51 梦想小镇:Sandbox 4 353 778 2022-07-02T07:49:21Z 13253902 7 创建页面,内容为“Hello” wikitext text/x-wiki Hello f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0 模块:测试 828 354 781 2022-09-16T05:54:01Z 13253902 7 创建页面,内容为“http = require("socket.http") body, ret = http.request("http://wwww.baidu.com") print(body)” Scribunto text/plain http = require("socket.http") body, ret = http.request("http://wwww.baidu.com") print(body) 4937a5fb9afa9571da6bf07e961387efb7a5efee 模板:模板 10 364 801 2022-09-16T07:02:59Z wiki>39886146 0 调整分类。根据不同的命名空间赋予不同的分类。现在帮助页面不属于模板分类了。 wikitext text/x-wiki <includeonly>{{#switch:{{{1|}}} |信息={{{2}}}:[[{{{2}}}::{{{3}}}]] |标准={{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#set:|模板提示={{{2}}}}}}}{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}} |示例=<div>{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}{{#uesc:{{{2}}}}}</div> |示例序号={{#vardefineecho: demoindex | {{#expr: {{#var: demoindex }} + 1 }} }} |作者={{#tag:bilicontributors|{{{2}}}}} |依赖=<ul>{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} | <li>[[{{#vardefineecho:{{{ {{#var: index }} }}}|{{{ {{#var: index }} }}}}}]]</li> {{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}</ul> {{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} | <div style="display:none">{{#tag:nowiki|{{{{{ {{#var: index }} }}}}}}}</div> {{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }} <!-- 需要给依赖的引入补一个判断是否为主空间页面的处理 --> |#default=<!-- 文档格式 --> {{#set:|模板名称={{PAGENAME}}|来源=wiki}}{{#vardefine:导入来源|{{#show:帮助:{{PAGENAME}}|?来源}}}} {{#ifeq:/{{#var:导入来源}}|{{SCRIPTPATH}}||<font color="red">此模板为一键安装导入,不建议手动修改。</font>}} <div class="row"> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> {{#css:h1, h2, h3, h4, h5, h6 { border-bottom-color: #d0d0d0;} }} '''模板''':[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=purge}} {{int:action-purge}}]] [[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=edit}} {{int:edit}}]] [[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=history}} {{int:history}}]]<br /> '''文档''':&#91;[[{{{docpage|帮助:{{PAGENAME}}}}}|{{int:view}}]]&#93; [[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=edit}} {{int:edit}}]] [[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=history}} {{int:history}}]] </div> <div id="OneKeyInstall" class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <!-- 当前版本 --> <!-- 手机端安装 --> </div> <div class="col-xs-12 visible-xs"> {{#show:帮助:{{PAGENAME}}|?标签}} </div> </div> {{#ifeq:{{NAMESPACE}}|模板|[[分类:模板]][[分类:一键安装]]|}}<!-- 仅对 模板空间 下的页面生效 --> {{#ifeq:{{NAMESPACE}}|帮助|[[分类:模板帮助]]|}}<!-- 仅对 帮助空间 下的页面生效 --> }} </includeonly> 11fd277b4aa93d1f37189ec46fd4b753fd6a4b0d 802 801 2023-04-23T12:02:08Z 13253902 7 导入1个版本 wikitext text/x-wiki <includeonly>{{#switch:{{{1|}}} |信息={{{2}}}:[[{{{2}}}::{{{3}}}]] |标准={{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#set:|模板提示={{{2}}}}}}}{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}} |示例=<div>{{#tag:SyntaxHighlight|{{#uescnowiki:{{{2}}}}}|lang={{{lang|html+handlebars}}}}}{{#uesc:{{{2}}}}}</div> |示例序号={{#vardefineecho: demoindex | {{#expr: {{#var: demoindex }} + 1 }} }} |作者={{#tag:bilicontributors|{{{2}}}}} |依赖=<ul>{{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} | <li>[[{{#vardefineecho:{{{ {{#var: index }} }}}|{{{ {{#var: index }} }}}}}]]</li> {{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }}</ul> {{#vardefine: index | 2 }}{{#while: | {{#if: {{{ {{#var: index }}| }}} | true }} | <div style="display:none">{{#tag:nowiki|{{{{{ {{#var: index }} }}}}}}}</div> {{#vardefine: index | {{#expr: {{#var: index }} + 1 }} }} }} <!-- 需要给依赖的引入补一个判断是否为主空间页面的处理 --> |#default=<!-- 文档格式 --> {{#set:|模板名称={{PAGENAME}}|来源=wiki}}{{#vardefine:导入来源|{{#show:帮助:{{PAGENAME}}|?来源}}}} {{#ifeq:/{{#var:导入来源}}|{{SCRIPTPATH}}||<font color="red">此模板为一键安装导入,不建议手动修改。</font>}} <div class="row"> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> {{#css:h1, h2, h3, h4, h5, h6 { border-bottom-color: #d0d0d0;} }} '''模板''':[[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=purge}} {{int:action-purge}}]] [[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=edit}} {{int:edit}}]] [[{{fullurl:{{{docpage|{{FULLPAGENAME}}}}}|action=history}} {{int:history}}]]<br /> '''文档''':&#91;[[{{{docpage|帮助:{{PAGENAME}}}}}|{{int:view}}]]&#93; [[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=edit}} {{int:edit}}]] [[{{fullurl:{{{docpage|帮助:{{PAGENAME}}}}}|action=history}} {{int:history}}]] </div> <div id="OneKeyInstall" class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> <!-- 当前版本 --> <!-- 手机端安装 --> </div> <div class="col-xs-12 visible-xs"> {{#show:帮助:{{PAGENAME}}|?标签}} </div> </div> {{#ifeq:{{NAMESPACE}}|模板|[[分类:模板]][[分类:一键安装]]|}}<!-- 仅对 模板空间 下的页面生效 --> {{#ifeq:{{NAMESPACE}}|帮助|[[分类:模板帮助]]|}}<!-- 仅对 帮助空间 下的页面生效 --> }} </includeonly> 11fd277b4aa93d1f37189ec46fd4b753fd6a4b0d MediaWiki:Common.css 8 17 783 279 2023-04-13T04:16:53Z 13253902 7 css text/css /* 这里放置的CSS将应用于所有皮肤 */ body { background:url("https://patchwiki.biligame.com/images/township/4/43/10w4x3malqp3dmttre75tdz8bflq4gf.jpg"); background-position:center left; background-size: cover; background-repeat: no-repeat; background-attachment:fixed } /* 背景半透明 */ .game-bg { background:rgba(255,255,255,0.8527)!important;} .wiki-header{ background:transparent!important;} /* 文字不换行 */ .no{white-space:nowrap;} /* 图片自适应 */ .img-kk { display: inline-block; height: auto; padding: 0px; max-width:100%; line-height: 1.42857143; -webkit-transition: all .2s ease-in-out; -o-transition: all .2s ease-in-out; transition: all .2s ease-in-out } /* 一级导航背景透明*/ .wiki-menu-li-1{ background:rgba(0,0,0,0)!important; } .title_active{ background:#000!important; } /* 一级导航栏搜索高度修正*/ .wiki-header .wiki-nav .nav-search-box{ padding:8px 0; } @media (max-width: 768px) { #simpleSearch1 #searchInput { padding:0;} } /* 首页建造 */ .ts-title-head{text-align:center;background-color:#E8DBB5;border-radius:10px 10px 0 0;font-size:x-large;box-shadow:2px 3px 3px 0px #aaa;padding-top:6px;color:#73593F;} .ts-title-foot{text-align:center;background-color:#E8DBB5;border-radius:0 0 10px 10px;padding:8px 8px 16px 8px;box-shadow:2px 2px 3px 0px #aaa;} .ts-box{background-color:#9F916B;border-radius:10px;padding:8px;box-shadow:0px 0px 5px 2px #777 inset;} /* SmartClick修正 */ .popover-content{word-break:break-all} bee7b3c359f0cd7641b21b66e7ce94ee6c4a38c6 MediaWiki:Gadget-Wikiplus-highlight.js 8 356 785 2023-04-22T07:11:19Z 13253902 7 创建页面 javascript text/javascript mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight'); 279fe01f0293c3a592646c0cb0dffdb092270a04 MediaWiki:Gadget-Wikiplus-highlight 8 357 787 2023-04-22T07:14:08Z 13253902 7 创建页面 wikitext text/x-wiki '''Wikiplus-highlight''':Wikiplus 语法高亮插件。 fe01533efc0e16a343e703e40da7a50f0ffece68 用户:13253902/common.js 2 358 788 2023-04-23T11:12:11Z 13253902 7 创建页面,内容为“mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js');” javascript text/javascript mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js'); 20cf7c4efe04e63c1fed67367518c96b43552a02 792 788 2023-04-23T11:55:03Z 13253902 7 // Edit via Wikiplus javascript text/javascript da39a3ee5e6b4b0d3255bfef95601890afd80709 MediaWiki:Gadget-Wikiplus.js 8 359 789 2023-04-23T11:13:12Z 13253902 7 创建页面 javascript text/javascript mw.loader.load('https://cdn.jsdelivr.net/npm/wikiplus-core@latest/dist/Main.js'); 20cf7c4efe04e63c1fed67367518c96b43552a02 MediaWiki:Gadget-Wikiplus 8 360 790 2023-04-23T11:13:59Z 13253902 7 创建页面 wikitext text/x-wiki '''Wikiplus''':Wikiplus 插件。 34a86ad98ee5592a79cfecc39e66bb9471bddcfc 811 790 2023-04-23T12:27:34Z 13253902 7 wikitext text/x-wiki '''Wikiplus''':Wikiplus 插件。文档:https://zh.moegirl.org/User:妹空酱/Wikiplus 398293db3db1a41cd1941959e9b589303db58666 模板:图片放大 10 361 794 793 2023-04-23T12:02:08Z 13253902 7 导入1个版本 wikitext text/x-wiki <includeonly><div class="showOnBox"><div class="showOn" style="width:{{#if:{{{2|}}}|{{{2|}}}|200px}}"> [[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|{{#if:{{{2|}}}|{{{2|}}}|200px}}|link=|class=showOnImgSource]]<div>{{{默认文字|}}}</div></div> <div class="showOnImg" style="top:0; left:0;">[[file:{{{1|}}}.{{#if:{{{4|}}}|{{{4|}}}|png}}|class=showOnImgBox|{{#if:{{{3|}}}|{{{3|}}}|400px}}|link=]]<div class="showOnText" style="width:{{{3|}}}">{{{放大文字|}}}</div></div></div>{{#if: {{#varexists: 图片放大 }} | | {{#vardefine: 图片放大|1}} {{JS|Amplification}}{{#css: .showOnBox{ display:inline-block; margin:5px; } .showOnImg { position: fixed; display:flex; background-color: rgba(0,0,0,0.50); z-index: 1000; overflow: auto; height: 100%; width: 100%; cursor: zoom-out; transition: 0.4s; opacity: 0; visibility: hidden; text-align: center; flex-direction: column; align-items: center; justify-content: center; } .showOnImgSource { cursor: zoom-in; } .showOn{ display: flex; flex-direction: column; align-items: center; } .bui-sns-info{ z-index: 0; } .showOnImgBox { text-align: center; width: auto; max-height: 100%; } .showOnText{ font-size: 16px; font-weight: bold; color: #fff; margin-top: 5px; } }} }}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 3d0c38db646ba507e8444ed6eab4d5734ceb28e7 MediaWiki:Amplification.js 8 362 796 795 2023-04-23T12:02:08Z 13253902 7 导入1个版本 javascript text/javascript $(".showOn").click(function() { var showElemnet = $(this).next(".showOnImg").clone().appendTo("body"); showElemnet.css({visibility:"visible", opacity: 1}) .click(function() { $(this).remove(); }) }); e00148868c45fc3d6eb167535733686a2466bfae 模板:JS 10 363 798 797 2023-04-23T12:02:08Z 13253902 7 导入1个版本 wikitext text/x-wiki <includeonly>{{ResourceLoader|MediaWiki:{{{1}}}|debug=true}}</includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 3cf20dc867db42608a55326ac2374ec4f309d8a7 模板:ResourceLoader 10 297 800 799 2023-04-23T12:02:08Z 13253902 7 导入1个版本 wikitext text/x-wiki <includeonly>{{#if:{{#varexists:防止多次加载ResourceLoaderJS}}||{{#vardefineecho:防止多次加载ResourceLoaderJS|{{#widget:ResourceLoader}}}}}} <div class="resourceLoader" style="display:none" data-is-module="{{{isModule|false}}}" data-mime="{{{MIME|}}}" >{{{1|}}}</div> </includeonly><noinclude>{{帮助:{{PAGENAME}}}}</noinclude> 7f41181853194aad9f366dd8da9f7bfd4fe0fe16 帮助:图片放大 12 365 804 803 2023-04-23T12:02:08Z 13253902 7 导入1个版本 wikitext text/x-wiki {{模板}}__NOTOC__<div class="row"> <div class="col-xs-12 col-sm-8 col-md-8 col-lg-8"> == 简单说明 == {{模板|信息|版本|1.0}} {{模板|信息|说明|点击图片可放大,兼容手机端阅读}} == 使用说明 == ※注意:目前的模板写法不可换行 {{模板|标准| <esc>{{图片放大|图片名称(png格式)|默认大小(可选/默认200px)|放大后大小(可选/默认400px)|默认文字=默认文字(选填)|放大文字=放大文字(选填)}}</esc> }} == 示例 == {{模板|示例| <esc>{{图片放大|Test|200px|800px|默认文字=我是默认文字|放大文字=我是放大文字}}</esc> }} </div> <div class="col-xs-12 col-sm-4 col-md-4 col-lg-4"> == 作者 == {{模板|作者|16083703}} <div class="hidden-xs"> == 标签 == {{模板|信息|标签|模板}} </div> == 依赖页面 == {{模板|依赖 |模板:JS |模板:ResourceLoader |模板:图片放大 |mediawiki:Amplification.js }} == 更新日志 == 1.0 </div> </div> 9599c93aee998c99353d54744b76d47bd3dc7208 MediaWiki:Gadget-SmartClick 8 366 806 2023-04-23T12:14:13Z 13253902 7 创建页面 wikitext text/x-wiki '''SmartClick''':Wiki编辑优化插件。文档:https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3 6bcaf051b4a91636301e1471391488526359495a MediaWiki:Gadget-SmartClick.js 8 367 807 2023-04-23T12:15:40Z 13253902 7 创建页面 javascript text/javascript mw.loader.load("//wiki.biligame.com/umamusume/index.php?title=MediaWiki:SmartClick.js&action=raw&ctype=text/javascript", "text/javascript"); console.log("SmartClick.js initialized!"); bfaf17f1edc31c3ddb22369bff56db589c2f692d Widget:ResourceLoader 274 368 810 2023-04-23T12:24:51Z 13253902 7 创建页面 wikitext text/x-wiki <includeonly> <Script> (window.RLQ=window.RLQ||[]).push([ ["jquery"], function(){ $(function(){ $('.resourceLoader').each(function () { var $x = $(this); var text = $.trim($x.text()); if (!text) return; //加载模块 if ($x.data('isModule') === true) return mw.loader.load(text); //自动补充MediaWiki命名空间 var ns = text.match('^.*?:'); if (!ns) text = 'MediaWiki:' + text; //加载CSS样式表 var mime = ($x.data('mime') || "text/javascript").toLowerCase(); if (mime == "text/css") { if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com/" + mw.config.get("wgGameName") + "/index.php?title=" + text + "&action=raw&ctype=text/css", "text/css"); } //加载JS脚本 if (ns && ns[0].toLowerCase() !== 'mediawiki:') { return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本'); } if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com/" + mw.config.get("wgGameName") + "/index.php?title=" + text + "&action=raw&ctype=text/javascript", "text/javascript"); }); }) }]); </Script> </includeonly> 15b1d286727447cc10f2461bcda79a4b4f7fd653 MediaWiki:Gadget-SmartClick 8 366 812 806 2023-04-23T12:29:32Z 13253902 7 wikitext text/x-wiki '''SmartClick''':Wiki编辑优化插件。<ref>https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3</ref> c7b41e1916b4f1995deaf40b80d364aab524dde7 822 812 2023-04-23T23:58:00Z 13253902 7 wikitext text/x-wiki '''SmartClick''':Wiki编辑优化插件。[https://wiki.biligame.com/umamusume/SmartClick%E6%96%87%E6%A1%A3 来源/文档] 0cc69fd06439dac92fa033fcb704c79f3bdc7745 MediaWiki:Gadget-Wikiplus 8 360 813 811 2023-04-23T12:30:20Z 13253902 7 wikitext text/x-wiki '''Wikiplus''':Wikiplus 快速编辑插件。<ref>https://zh.moegirl.org/User:妹空酱/Wikiplus</ref> 04006942b23b243664008e458d8c669284814e81 826 813 2023-04-24T00:20:00Z 13253902 7 wikitext text/x-wiki '''Wikiplus''':Wikiplus 快速编辑插件。[https://zh.moegirl.org/User:妹空酱/Wikiplus 来源/文档] fcfe937b64cd669119c9faadd16f87f8c79abd30 MediaWiki:Gadget-Wikiplus-highlight 8 357 814 787 2023-04-23T12:31:34Z 13253902 7 wikitext text/x-wiki '''Wikiplus-highlight''':Wikiplus 语法高亮插件。<ref>https://github.com/bhsd-harry/Wikiplus-highlight</ref> d01266b1651a59c2fd7f60937c7b36962cf41a9e 825 814 2023-04-24T00:17:19Z 13253902 7 wikitext text/x-wiki '''Wikiplus-highlight''':Wikiplus 语法高亮插件。[https://github.com/bhsd-harry/Wikiplus-highlight 来源/文档] eaa46dceb652fe810a0e68d59d4b014e1fccb8aa MediaWiki:Gadget-Wikiplus.css 8 369 815 2023-04-23T13:52:47Z 13253902 7 创建页面 css text/css #Wikiplus-SR-Intro a{font-size:smaller;} 7990b03ce519646a7abb9ddc9903a596d97b4e75 MediaWiki:Gadgets-definition 8 56 816 809 2023-04-23T13:53:43Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit]|BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit]|SmartClick.js * Wikiplus[ResourceLoader|rights=edit]|Wikiplus.js|Wikiplus.css * Wikiplus-highlight[ResourceLoader|rights=edit]|Wikiplus-highlight.js ==User== * BilibiliUser[ResourceLoader|default]|BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default]|ScrollToc.js <!-- * tippy[ResourceLoader|default]|tippy.js --> 716755ce5c49b06bd22722bdf3bf1fd29b5f0ca8 819 816 2023-04-23T14:02:36Z 13253902 7 // Edit via Wikiplus wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit] | SmartClick.js * Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css * Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js ==User== * BilibiliUser[ResourceLoader|default] | BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default] | ScrollToc.js <!-- * tippy[ResourceLoader|default] | tippy.js --> 2b087f3707c47b04b7f9c64e695c14ca83e45990 821 819 2023-04-23T14:06:17Z 13253902 7 // Edit via Wikiplus wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit] | SmartClick.js * Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css * Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js | Wikiplus-highlight.css ==User== * BilibiliUser[ResourceLoader|default] | BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default] | ScrollToc.js <!-- * tippy[ResourceLoader|default] | tippy.js --> a4297deeadbaa9c62f7906b0305fabc3cd4c2746 824 821 2023-04-24T00:00:36Z 13253902 7 wikitext text/x-wiki ==Editing== * BwikiBatchEditor[ResourceLoader|rights=edit] | BwikiBatchEditor.js * SmartClick[ResourceLoader|rights=edit] | SmartClick.js | SmartClick.css * Wikiplus[ResourceLoader|rights=edit] | Wikiplus.js | Wikiplus.css * Wikiplus-highlight[ResourceLoader|rights=edit] | Wikiplus-highlight.js | Wikiplus-highlight.css ==User== * BilibiliUser[ResourceLoader|default] | BilibiliUser.js ==System== * ScrollToc[ResourceLoader|default] | ScrollToc.js <!-- * tippy[ResourceLoader|default] | tippy.js --> ba28a6cc025b1d98c450b28fa33c05c5a0f07caf 常用编辑 0 13 817 16 2023-04-23T13:56:19Z 13253902 7 wikitext text/x-wiki __TOC__ ==整站== {| class="wikitable text-center" width=100% |- | width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]] |- | [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]] | | | |} ==新增== {| class="wikitable text-center" width=100% |- ! width=25% | ! width=25% | ! width=25% | ! width=25% | |- | | | | |- |<inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | <inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | | |} ==== {| class="wikitable text-center" width=100% |- | width=25% | | width=25% | | width=25% | | width=25% | |- | | | | |}{{#css: #Wikiplus-SR-Intro a{font-size:smaller;} }} 037d6356e97f14a5f56e0f2db7b35f083b1c079f 818 817 2023-04-23T13:59:42Z 13253902 7 // Edit via Wikiplus wikitext text/x-wiki __TOC__ ==整站== {| class="wikitable text-center" width=100% |- | width=25% | [[https://wiki.biligame.com/township/index.php?title=首页&action=submit 首页编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Sidebar 整站导航编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.css 整站CSS编辑]] | width=25% | [[https://wiki.biligame.com/township/MediaWiki:Common.js 整站JS编辑]] |- | [[https://wiki.biligame.com/township/index.php?title=首页&action=purge 首页刷新]] | | | |} ==新增== {| class="wikitable text-center" width=100% |- ! width=25% | ! width=25% | ! width=25% | ! width=25% | |- | | | | |- |<inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | <inputbox> type=create preload= placeholder= width=20 break=no </inputbox> | | |} ==== {| class="wikitable text-center" width=100% |- | width=25% | | width=25% | | width=25% | | width=25% | |- | | | | |} 1f0903a0186682cc5db21468d7ffaf4856a88963 MediaWiki:Gadget-Wikiplus-highlight.css 8 370 820 2023-04-23T14:05:35Z 13253902 7 创建页面 css text/css #wphl-settings a{font-size:smaller;} 2bb2efaad98939a6404f2b2b2cad151a6e1cceb1 MediaWiki:Gadget-SmartClick.css 8 371 823 2023-04-23T23:59:24Z 13253902 7 创建页面 css text/css /* SmartClick修正 */ .popover-content{word-break:break-all} e7280991a21d58215cb35bfe19e61e4c8e724d9f MediaWiki:Gadget-BwikiBatchEditor 8 57 827 148 2023-04-25T13:08:15Z 13253902 7 wikitext text/x-wiki '''BwikiBatchEditor''':BWIKI批量页面编辑器。[https://wiki.biligame.com/factorio/%E7%94%A8%E6%88%B7:123855714/BwikiBatchEditor 来源/文档] 62a908d9333615e758f328549132aad889aaebaf MediaWiki:Gadget-BilibiliUser 8 277 828 503 2023-04-25T13:09:32Z 13253902 7 wikitext text/x-wiki '''BWIKI用户标签扩展工具''':自动展示用户信息。[https://wiki.biligame.com/wiki/%E7%94%A8%E6%88%B7:123855714/BilibiliUser 来源/文档] 8e03cadfc38a62a4a278cf34fec038224fd021c0 MediaWiki:Gadget-ScrollToc 8 288 829 577 2023-04-25T13:12:10Z 13253902 7 wikitext text/x-wiki '''ScrollToc''':滚动监听目录插件,仅在电脑端生效,移动端无效。[https://wiki.biligame.com/wiki/%E7%94%A8%E6%88%B7:123855714/ScrollToc 来源/文档] d0417479646018fb978cf023c032599364ab38ad 房屋/光明屋 0 81 830 270 2023-05-07T13:34:15Z 13253902 7 13253902移动页面[[光明屋]]至[[房屋/光明屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84<!-- 用顿号隔开 --> |金币=7500 |人口=150 |经验=150 |时间(天)=1 |时间(时)=6 |时间(分)= |时间(秒)= |占地=2×1 }} e8415353b04f8286f90a75fabb1db84a5ec7f57e 房屋/一厅一室房 0 68 831 259 2023-05-07T13:34:15Z 13253902 7 13253902移动页面[[一厅一室房]]至[[房屋/一厅一室房]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26<!-- 用顿号隔开 --> |金币=540 |人口=60 |经验=60 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= |占地=1×1 }} f959eabfeb7705644897f061d2929a41901c686d 房屋/三角顶小屋 0 92 832 254 2023-05-07T13:34:15Z 13253902 7 13253902移动页面[[三角顶小屋]]至[[房屋/三角顶小屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=三角顶小屋 |等级=12、13、16、17<!-- 用顿号隔开 --> |金币=105 |人口=35 |经验=35 |时间(天)= |时间(时)=2 |时间(分)= |时间(秒)= |占地=1×1 }} 0b6aed8292afe2a6ba863727e06ffcce0d3fc590 房屋/公寓大楼 0 77 833 265 2023-05-07T13:34:15Z 13253902 7 13253902移动页面[[公寓大楼]]至[[房屋/公寓大楼]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46<!-- 用顿号隔开 --> |金币=2250 |人口=90 |经验=90 |时间(天)= |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 19c94fbe28344be2a43c3fa7242a51b2fa3ae089 房屋/公寓综合楼 0 279 834 542 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[公寓综合楼]]至[[房屋/公寓综合楼]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=公寓综合楼 |等级=86、90<!-- 用顿号隔开 --> |金币=46400 |人口=580 |经验=580 |时间(天)=1 |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} b87b1408870fff6bad1d0f2339ee842f2208ae47 房屋/原木屋 0 94 835 275 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[原木屋]]至[[房屋/原木屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80<!-- 用顿号隔开 --> |金币=19000 |人口=380 |经验=380 |时间(天)=1 |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 6bbaf277885b8425e5366667996afc32ea94b37d 房屋/共管公寓(90) 0 283 836 565 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[共管公寓(90)]]至[[房屋/共管公寓(90)]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90<!-- 用顿号隔开 --> |金币=56000 |人口=700 |经验=700 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} 76803c9b048c304cbdedad67cad7b052a2a8df0d 房屋/共管公寓 0 75 837 547 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[共管公寓]]至[[房屋/共管公寓]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42<!-- 用顿号隔开 --> |金币=1700 |人口=85 |经验=85 |时间(天)= |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} d1bb5855503fb8d8199fa5a7afeb37ffc534aace 房屋/农舍 0 66 838 253 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[农舍]]至[[房屋/农舍]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15<!-- 用顿号隔开 --> |金币=60 |人口=30 |经验=30 |时间(天)= |时间(时)=1 |时间(分)=30 |时间(秒)= |占地=1×1 }} 4091d4edae2174be77c4140851421512f7e69c03 房屋/匠心小栋 0 69 839 256 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[匠心小栋]]至[[房屋/匠心小栋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20<!-- 用顿号隔开 --> |金币=225 |人口=45 |经验=45 |时间(天)= |时间(时)=4 |时间(分)= |时间(秒)= |占地=1×1 }} 69a8f24db070a578571b05344940eeee67897545 房屋/别墅 0 91 840 252 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[别墅]]至[[房屋/别墅]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=别墅 |等级=8、9、13、14<!-- 用顿号隔开 --> |金币=25 |人口=25 |经验=25 |时间(天)= |时间(时)=1 |时间(分)= |时间(秒)= |占地=1×1 }} 05eb11375c9f1b40053edb79dd42f642f85fc697 房屋/双尖塔楼 0 86 841 276 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[双尖塔楼]]至[[房屋/双尖塔楼]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84<!-- 用顿号隔开 --> |金币=21000 |人口=420 |经验=420 |时间(天)=1 |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 0fa86dbfb55d299189a13e4852537950756565f0 房屋/合租房 0 76 842 266 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[合租房]]至[[房屋/合租房]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58<!-- 用顿号隔开 --> |金币=3000 |人口=100 |经验=100 |时间(天)= |时间(时)=22 |时间(分)= |时间(秒)= |占地=1×2 }} c4cd36f47a00c4131b77923b1939f6b50570f195 房屋/双层楼房 0 93 843 257 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[双层楼房]]至[[房屋/双层楼房]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=双层楼房 |等级=20、21、21、22<!-- 用顿号隔开 --> |金币=300 |人口=50 |经验=50 |时间(天)= |时间(时)=6 |时间(分)= |时间(秒)= |占地=1×1 }} bcb13568dfa00fe5b00e8fd193301a6813217770 房屋/圆木小屋 0 83 844 272 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[圆木小屋]]至[[房屋/圆木小屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72<!-- 用顿号隔开 --> |金币=11500 |人口=230 |经验=230 |时间(天)=1 |时间(时)=8 |时间(分)= |时间(秒)= |占地=1×2 }} ecf54634d70a7d4c2c57e923bf831a1c43641614 房屋/商住综合楼 0 88 845 277 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[商住综合楼]]至[[房屋/商住综合楼]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82<!-- 用顿号隔开 --> |金币=27600 |人口=460 |经验=460 |时间(天)=1 |时间(时)=16 |时间(分)= |时间(秒)= |占地=1×2 }} a4f3e258b43e38c5cb69616aeed931959c5a72b7 房屋/复式公寓 0 71 846 260 2023-05-07T13:34:16Z 13253902 7 13253902移动页面[[复式公寓]]至[[房屋/复式公寓]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29<!-- 用顿号隔开 --> |金币=715 |人口=65 |经验=65 |时间(天)= |时间(时)=9 |时间(分)= |时间(秒)= |占地=1×1 }} 9dc6e9539ad73fb71e695676f3664770e8244d5d 房屋/带花园的高层 0 78 847 267 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[带花园的高层]]至[[房屋/带花园的高层]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62<!-- 用顿号隔开 --> |金币=3850 |人口=110 |经验=110 |时间(天)=1 |时间(时)= |时间(分)= |时间(秒)= |占地=1×2 }} 81f5931dd514b70647abcafaa2291665cb86b945 房屋/小屋 0 10 848 111 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[小屋]]至[[房屋/小屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=小屋 |等级=4、4、4、5 <!-- 用顿号隔开 --> |金币=5 |人口=5 |经验=5 |时间(天)= |时间(时)= |时间(分)=1 |时间(秒)= |占地=1×1 }} aa5cbf6dfdfaa8dcf8a88f9eadac7d7b6ee011db 房屋/折顶式小屋 0 62 849 255 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[折顶式小屋]]至[[房屋/折顶式小屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18<!-- 用顿号隔开 --> |金币=160 |人口=40 |经验=40 |时间(天)= |时间(时)=3 |时间(分)= |时间(秒)= |占地=1×1 }} af70904016d34703defd9f5a8efdff2bcab5d750 房屋/带泳池的高层 0 282 850 546 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[带泳池的高层]]至[[房屋/带泳池的高层]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=带泳池的高层 |等级=92<!-- 用顿号隔开 --> |金币=66000 |人口=820 |经验=820 |时间(天)=1 |时间(时)=22 |时间(分)= |时间(秒)= |占地=1×2 }} 4ba40e9dd15d9386b78c90600532e9ab151084bc 房屋/带阳台的房子 0 280 851 543 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[带阳台的房子]]至[[房屋/带阳台的房子]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=带阳台的房子 |等级=88<!-- 用顿号隔开 --> |金币=51200 |人口=640 |经验=640 |时间(天)=1 |时间(时)=18 |时间(分)= |时间(秒)= |占地=1×2 }} 5c01d245b2fb4536f6ef7654fbe67c2078b4cead 房屋/带阁楼的高层建筑 0 79 852 269 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[带阁楼的高层建筑]]至[[房屋/带阁楼的高层建筑]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60<!-- 用顿号隔开 --> |金币=6300 |人口=140 |经验=140 |时间(天)=1 |时间(时)=4 |时间(分)= |时间(秒)= |占地=1×2 }} 99820036334f81c310cbbc8f7dec0306dadefb3f 房屋/普通高层 0 80 853 268 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[普通高层]]至[[房屋/普通高层]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59<!-- 用顿号隔开 --> |金币=4800 |人口=120 |经验=120 |时间(天)=1 |时间(时)=2 |时间(分)= |时间(秒)= |占地=1×2 }} 0cc211115b21b814e5beed4e9016d682e7c94825 房屋/摩登高层 0 84 854 273 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[摩登高层]]至[[房屋/摩登高层]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74<!-- 用顿号隔开 --> |金币=13500 |人口=270 |经验=270 |时间(天)=1 |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×2 }} 7be52e5ab632c35b68a9de10bb27a7802a7fd37c 房屋/牧人小舍 0 90 855 250 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[牧人小舍]]至[[房屋/牧人小舍]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10<!-- 用顿号隔开 --> |金币=15 |人口=15 |经验=15 |时间(天)= |时间(时)= |时间(分)=20 |时间(秒)= |占地=1×1 }} 29aee94bc55ac21a87a803f7cf97e6037ae09205 房屋/海螺屋 0 61 856 251 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[海螺屋]]至[[房屋/海螺屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12<!-- 用顿号隔开 --> |金币=20 |人口=20 |经验=20 |时间(天)= |时间(时)= |时间(分)=30 |时间(秒)= |占地=1×1 }} 65149da49f1cb10bba03a86606385496e88a7255 房屋/瓷砖高层 0 82 857 271 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[瓷砖高层]]至[[房屋/瓷砖高层]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68<!-- 用顿号隔开 --> |金币=9500 |人口=190 |经验=190 |时间(天)=1 |时间(时)=8 |时间(分)= |时间(秒)= |占地=1×2 }} 92f5a4a8cc200542c8dbbe80162a8255aa0985c6 房屋/独户住房 0 89 858 278 2023-05-07T13:34:17Z 13253902 7 13253902移动页面[[独户住房]]至[[房屋/独户住房]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84<!-- 用顿号隔开 --> |金币=36400 |人口=520 |经验=520 |时间(天)=1 |时间(时)=16 |时间(分)= |时间(秒)= |占地=2×2 }} 28b86b144abc9ecc0424bb1e9ecb27e9bfb0b97b 房屋/维多利亚联排别墅 0 73 859 262 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[维多利亚联排别墅]]至[[房屋/维多利亚联排别墅]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44<!-- 用顿号隔开 --> |金币=1200 |人口=75 |经验=75 |时间(天)= |时间(时)=12 |时间(分)= |时间(秒)= |占地=1×2 }} 2665741fc4bce27223bbfb55a5778b4876e48f58 房屋/科德角式小屋 0 12 860 115 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[科德角式小屋]]至[[房屋/科德角式小屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=科德角式小屋 |等级=1、5、6、7、8 <!-- 用顿号隔开 --> |金币=10 |人口=10 |经验=10 |时间(天)= |时间(时)= |时间(分)=10 |时间(秒)= |占地=1×1 }} f5d24e37cf53b82e3f2052d9916d21bfa46556bf 房屋/美式四角楼 0 67 861 258 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[美式四角楼]]至[[房屋/美式四角楼]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24<!-- 用顿号隔开 --> |金币=385 |人口=55 |经验=55 |时间(天)= |时间(时)=7 |时间(分)= |时间(秒)= |占地=1×1 }} b05b39fc7c03dc225780178db67d76cbb7a7d0f1 房屋/花园式公寓 0 74 862 263 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[花园式公寓]]至[[房屋/花园式公寓]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39<!-- 用顿号隔开 --> |金币=1440 |人口=80 |经验=80 |时间(天)= |时间(时)=16 |时间(分)= |时间(秒)= |占地=1×2 }} 40609a3d274be806a09c541a80e122d00905ce85 884 862 2023-05-07T14:46:08Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39 |金币=1440 |人口=80 |经验=80 |占地=1×2 |时间=960 }} dd8ac8f9939662ba1977a4950a579a3d02ce20c7 房屋/联排别墅 0 72 863 261 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[联排别墅]]至[[房屋/联排别墅]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32<!-- 用顿号隔开 --> |金币=910 |人口=70 |经验=70 |时间(天)= |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×1 }} 5b0c63405f9ea9bf49bc388de7b4367de7e1a2dd 882 863 2023-05-07T14:46:04Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=联排别墅 |等级=28、30、31、32 |金币=910 |人口=70 |经验=70 |占地=1×1 |时间=600 }} d3a7deeec76e4d2527f3251a67297fa18325e743 房屋/老房屋 0 85 864 274 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[老房屋]]至[[房屋/老房屋]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78<!-- 用顿号隔开 --> |金币=16500 |人口=330 |经验=330 |时间(天)=1 |时间(时)=10 |时间(分)= |时间(秒)= |占地=1×2 }} e9a42edbbef59e0ba26808df5b142353f0ace3e1 895 864 2023-05-07T14:46:33Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=老房屋 |等级=58、59、60、76、78 |金币=16500 |人口=330 |经验=330 |占地=1×2 |时间=2040 }} 6aadb9b219566b9e3d4fcc0798b995a132dc8897 房屋/高层建筑 0 281 865 545 2023-05-07T13:34:18Z 13253902 7 13253902移动页面[[高层建筑]]至[[房屋/高层建筑]],不留重定向:移动房屋 wikitext text/x-wiki {{房屋 |中文=高层建筑 |等级=92<!-- 用顿号隔开 --> |金币=61000 |人口=760 |经验=760 |时间(天)=1 |时间(时)=20 |时间(分)= |时间(秒)= |占地=1×2 }} c4b50bda3ed316c9bedb04345f7fff298135f287 903 865 2023-05-07T14:46:45Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=高层建筑 |等级=92 |金币=61000 |人口=760 |经验=760 |占地=1×2 |时间=2640 }} 3314e8d19561e9cc6f4e5b554f2903609c0010aa 分类:房屋 14 372 866 2023-05-07T13:35:23Z 13253902 7 创建页面 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 模板:房屋表 10 24 867 540 2023-05-07T13:37:25Z 13253902 7 wikitext text/x-wiki <includeonly>|- |[[文件:{{{2|}}}.png|100px|class=img-kk|link=房屋/{{{2|}}}]]<br>[[{{{1|}}}|{{{2|}}}]] | style="font-size:2em;"| {{{3|}}} | style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{4|}}} | style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{5|}}} | style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{7|}}}|{{{7|}}}天}}{{#if:{{{8|}}}|{{{8}}}时}}{{#if:{{{9|}}}|{{{9|}}}分}}{{#if:{{{10|}}}|{{{10|}}}秒}} </includeonly> 087968facf74d7724b8143e3f1092a31340b5631 906 867 2023-05-07T14:58:07Z 13253902 7 wikitext text/x-wiki <noinclude> {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间 |?占地 |named args=1 |link=none |sort=金币 |order=asc |headers=hide |template=房屋表 |format=template |limit=3 |searchlabel= }} |}</noinclude><includeonly>|- |[[文件:{{{中文|}}}.png|100px|class=img-kk|link=房屋/{{{中文|}}}]]<br>[[{{{1|}}}|{{{中文|}}}]] | style="font-size:2em;"| {{{最大数量|}}} | style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{转换时间|{{{时间|}}}}} </includeonly> cb7234ba5e2dfd574dd2cdf59741912065bb1f95 模板:转换时间 10 373 868 2023-05-07T14:29:42Z 13253902 7 创建页面 wikitext text/x-wiki <noinclude>{{转换时间|2430.05}}</noinclude><includeonly><!-- -->{{#vardefine:天|{{#expr:{{{1|}}}/24/60}}}}<!-- -->{{#vardefine:时|{{#expr:({{{1|}}}-floor({{#var:天}})*24*60)/60}}}}<!-- -->{{#vardefine:分|{{#expr:({{{1|}}}-floor({{#var:天}})*24*60-floor({{#var:时}})*60)}}}}<!-- -->{{#vardefine:秒|{{#expr:({{#var:分}}-floor({{#var:分}}))*60}}}}<!-- -->{{#ifeq:{{#expr:floor({{#var:天}})}}|0||{{#expr:floor({{#var:天}})}}天}}<!-- -->{{#ifeq:{{#expr:floor({{#var:时}})}}|0||{{#expr:floor({{#var:时}})}}时}}<!-- -->{{#ifeq:{{#expr:floor({{#var:分}})}}|0||{{#expr:floor({{#var:分}})}}分}}<!-- -->{{#ifeq:{{#expr:floor({{#var:秒}})}}|0||{{#expr:floor({{#var:秒}})}}秒}}<!-- --></includeonly> 0dffb59bc459e69f126be2ae850d4b8a25d3793f 房屋/小屋 0 10 869 848 2023-05-07T14:34:37Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=小屋 |等级=4、4、4、5 |金币=5 |人口=5 |经验=5 |占地=1×1 |时间=1 }} e661dd77d1776bdc287f4e1fa41d7731641e67a9 房屋/科德角式小屋 0 12 870 860 2023-05-07T14:34:40Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=科德角式小屋 |等级=1、5、6、7、8 |金币=10 |人口=10 |经验=10 |占地=1×1 |时间=10 }} dd2311ce7f05aa22a48e39455491e0d11b0c278c 房屋/牧人小舍 0 90 871 855 2023-05-07T14:45:46Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=牧人小舍 |等级=1、1、5、6、9、10 |金币=15 |人口=15 |经验=15 |占地=1×1 |时间=20 }} 62512e1d300452020bbb24202bf4fc475ba8438a 房屋/海螺屋 0 61 872 856 2023-05-07T14:45:49Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=海螺屋 |等级=1、7、11、12 |金币=20 |人口=20 |经验=20 |占地=1×1 |时间=30 }} d55190bd3e08a283b8c9141fcdca93a9062c7527 房屋/别墅 0 91 873 840 2023-05-07T14:45:51Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=别墅 |等级=8、9、13、14 |金币=25 |人口=25 |经验=25 |占地=1×1 |时间=60 }} 0ee04390ae4bf744f1aa44f397fb331d1bd4c012 房屋/农舍 0 66 874 838 2023-05-07T14:45:52Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=农舍 |等级=10、11、15 |金币=60 |人口=30 |经验=30 |占地=1×1 |时间=90 }} 3bbe65c14c9d027e4da9eb694e71d5f784d4bf84 房屋/三角顶小屋 0 92 875 832 2023-05-07T14:45:53Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=三角顶小屋 |等级=12、13、16、17 |金币=105 |人口=35 |经验=35 |占地=1×1 |时间=120 }} 80c7eaec1eb445b81856aec783443d235a2a1ecd 房屋/折顶式小屋 0 62 876 849 2023-05-07T14:45:54Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=折顶式小屋 |等级=14、15、16、18 |金币=160 |人口=40 |经验=40 |占地=1×1 |时间=180 }} 1c797af713e48a9b2dbd32d36de802a0c4805872 房屋/匠心小栋 0 69 877 839 2023-05-07T14:45:55Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=匠心小栋 |等级=17、18、19、19、20 |金币=225 |人口=45 |经验=45 |占地=1×1 |时间=240 }} 6bb8ea5f8b9dfe91bec5426f1aaa708745969147 房屋/双层楼房 0 93 878 843 2023-05-07T14:45:55Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=双层楼房 |等级=20、21、21、22 |金币=300 |人口=50 |经验=50 |占地=1×1 |时间=360 }} 4bef765cf5487f6a3e357392b9d0f69e27e163b5 房屋/美式四角楼 0 67 879 861 2023-05-07T14:45:58Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=美式四角楼 |等级=22、23、23、24 |金币=385 |人口=55 |经验=55 |占地=1×1 |时间=420 }} 2af9b093ea3a8681c4d25cc13f1563ad6a7dd1a4 房屋/一厅一室房 0 68 880 831 2023-05-07T14:46:00Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=一厅一室房 |等级=24、25、25、26 |金币=540 |人口=60 |经验=60 |占地=1×1 |时间=480 }} 49504e585aaf9b67fc8166f8dc7c8095007dadb2 房屋/复式公寓 0 71 881 846 2023-05-07T14:46:02Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=复式公寓 |等级=26、27、27、28、29 |金币=715 |人口=65 |经验=65 |占地=1×1 |时间=540 }} 1c36efaa656185e25086525c230a0a47caecf014 房屋/维多利亚联排别墅 0 73 883 859 2023-05-07T14:46:06Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=维多利亚联排别墅 |等级=29、30、33、34、44 |金币=1200 |人口=75 |经验=75 |占地=1×2 |时间=720 }} 13a4f98cda580b7e13fdf49e68b3a52627c12466 房屋/共管公寓 0 75 885 837 2023-05-07T14:46:10Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=32、33、36、38、40、42 |金币=1700 |人口=85 |经验=85 |占地=1×2 |时间=1080 }} c3d4b639876dee52acd2c0b465405d5fccada268 房屋/公寓大楼 0 77 886 833 2023-05-07T14:46:13Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=公寓大楼 |等级=34、35、36、41、43、46 |金币=2250 |人口=90 |经验=90 |占地=1×2 |时间=1200 }} b3363084fd72de948cdb3c5a025674aacd08c4b6 房屋/合租房 0 76 887 842 2023-05-07T14:46:15Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=合租房 |等级=37、38、45、47、58 |金币=3000 |人口=100 |经验=100 |占地=1×2 |时间=1320 }} 66b7ef57726d5fd4ebc16bfef422c53ff9e90160 房屋/带花园的高层 0 78 888 847 2023-05-07T14:46:17Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带花园的高层 |等级=39、40、41、48、62 |金币=3850 |人口=110 |经验=110 |占地=1×2 |时间=1440 }} ede0a6516953aab7bf6442d3abfdd2cbc658dd86 房屋/普通高层 0 80 889 853 2023-05-07T14:46:19Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=普通高层 |等级=42、43、45、49、50、52、54、56、59 |金币=4800 |人口=120 |经验=120 |占地=1×2 |时间=1560 }} 6ed9a22c3aec36c06d9b5ea842951e1db5740ec3 房屋/带阁楼的高层建筑 0 79 890 852 2023-05-07T14:46:21Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带阁楼的高层建筑 |等级=44、46、47、48、49、51、53、55、57、60 |金币=6300 |人口=140 |经验=140 |占地=1×2 |时间=1680 }} daee660e72459baa5fb859a3939850e186575949 房屋/光明屋 0 81 891 830 2023-05-07T14:46:23Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84 |金币=7500 |人口=150 |经验=150 |占地=2×1 |时间=1800 }} 8f20b4b8e8605767ab52a54cee56649faa85fb6f 房屋/瓷砖高层 0 82 892 857 2023-05-07T14:46:26Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68 |金币=9500 |人口=190 |经验=190 |占地=1×2 |时间=1920 }} a8e839830631be76706c14771c6606709c217b52 房屋/圆木小屋 0 83 893 844 2023-05-07T14:46:28Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=圆木小屋 |等级=54、55、70、72 |金币=11500 |人口=230 |经验=230 |占地=1×2 |时间=1920 }} 5c9f42bad248f5cf9f544577e2a0d164e8280fc4 房屋/摩登高层 0 84 894 854 2023-05-07T14:46:31Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74 |金币=13500 |人口=270 |经验=270 |占地=1×2 |时间=2040 }} f97b95425a35e35c5b73d3146eaccbf29e2d121c 房屋/原木屋 0 94 896 835 2023-05-07T14:46:35Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80 |金币=19000 |人口=380 |经验=380 |占地=1×2 |时间=2160 }} 44ee15b679563ab844343687e0b366737d9c98d3 房屋/双尖塔楼 0 86 897 841 2023-05-07T14:46:37Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84 |金币=21000 |人口=420 |经验=420 |占地=1×2 |时间=2160 }} dc0d5c606061e5e90a5fb248121d914e4ab8f00e 房屋/商住综合楼 0 88 898 845 2023-05-07T14:46:39Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=商住综合楼 |等级=72、74、76、82 |金币=27600 |人口=460 |经验=460 |占地=1×2 |时间=2400 }} 3052daba6d081bb221682795e3e7557799e5b16c 房屋/独户住房 0 89 899 858 2023-05-07T14:46:41Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=独户住房 |等级=78、80、82、84 |金币=36400 |人口=520 |经验=520 |占地=2×2 |时间=2400 }} 75ee3304afdd650965bfc6a47faa96dc10c5a8ca 房屋/公寓综合楼 0 279 900 834 2023-05-07T14:46:43Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=公寓综合楼 |等级=86、90 |金币=46400 |人口=580 |经验=580 |占地=1×2 |时间=2520 }} 56bd819a1c3b141c36b176bc095a24575b984d5b 房屋/带阳台的房子 0 280 901 851 2023-05-07T14:46:44Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带阳台的房子 |等级=88 |金币=51200 |人口=640 |经验=640 |占地=1×2 |时间=2520 }} 49b0839764c576a303ceb9a6289f3fb8061249f9 房屋/共管公寓(90) 0 283 902 836 2023-05-07T14:46:44Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90 |金币=56000 |人口=700 |经验=700 |占地=1×2 |时间=2640 }} 0387e79f78a40c31fa7aa47ffb5730f853e4361d 房屋/带泳池的高层 0 282 904 850 2023-05-07T14:46:46Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带泳池的高层 |等级=92 |金币=66000 |人口=820 |经验=820 |占地=1×2 |时间=2760 }} 65a7690978b43489246294536280189826034eee 模板:房屋 10 11 905 571 2023-05-07T14:56:25Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间={{{时间|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{中文|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> e356fb2911ef56fe7737a213107298d54bf7efea 房屋 0 23 907 541 2023-05-07T14:58:35Z 13253902 7 wikitext text/x-wiki {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间 |?占地 |named args=1 |link=none |sort=金币 |order=asc |headers=hide |template=房屋表 |format=template |limit=1000 }} |} 083ab4bddd85abab1986705d507bdb39875ec121 MediaWiki:Common.js 8 33 908 808 2023-05-07T14:59:25Z 13253902 7 // Edit via Wikiplus javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /*加载Bikit*/ try { mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');} catch(e) {} /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ mw.loader.load("//wiki.biligame.com/township/index.php?title=MediaWiki:Gadget-tippy.js&action=raw&ctype=text/javascript", "text/javascript"); d950a221a03bcc63410dce17542945bfb596e009 909 908 2023-05-07T15:02:41Z 13253902 7 javascript text/javascript /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ /*加载Bikit*/ try { mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');} catch(e) {} /* 技术处理外链 */ /* 来源:异星工厂WIKI*/ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["youtu","twitter","wikipedia","facebook"]; var status=false; key.forEach(function(k){ status=url.indexOf(k)>=0||status; }); url=status?url:url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"); $(this).attr("href",url); } }); /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ mw.loader.load("//wiki.biligame.com/township/MediaWiki:Gadget-tippy.js?action=raw&ctype=text/javascript", "text/javascript"); 3f0f4bddc4b10a4f77e2ae42c0ba8cf4d2d1ec7b 文件:房屋 光明屋.png 6 105 910 292 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:光明屋.png]]至[[文件:房屋 光明屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 三角顶小屋.png 6 116 911 304 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:三角顶小屋.png]]至[[文件:房屋 三角顶小屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 一厅一室房.png 6 121 913 318 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:一厅一室房.png]]至[[文件:房屋 一厅一室房.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 共管公寓.png 6 104 914 291 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:共管公寓.png]]至[[文件:房屋 共管公寓.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓综合楼.png 6 294 915 632 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:公寓综合楼.png]]至[[文件:房屋 公寓综合楼.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 匠心小栋.png 6 109 916 296 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:匠心小栋.png]]至[[文件:房屋 匠心小栋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 农舍.png 6 114 917 302 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:农舍.png]]至[[文件:房屋 农舍.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双尖塔楼.png 6 119 918 307 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:双尖塔楼.png]]至[[文件:房屋 双尖塔楼.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 别墅.png 6 125 919 314 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:别墅.png]]至[[文件:房屋 别墅.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 原木屋.png 6 122 920 311 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:原木屋.png]]至[[文件:房屋 原木屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双层楼房.png 6 118 921 306 2023-05-08T05:28:34Z 13253902 7 13253902移动页面[[文件:双层楼房.png]]至[[文件:房屋 双层楼房.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 合租房.png 6 107 922 294 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:合租房.png]]至[[文件:房屋 合租房.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 小屋.png 6 19 923 309 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:小屋.png]]至[[文件:房屋 小屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 复式公寓.png 6 102 924 289 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:复式公寓.png]]至[[文件:房屋 复式公寓.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 圆木小屋.png 6 123 925 312 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:圆木小屋.png]]至[[文件:房屋 圆木小屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 962 925 2023-05-09T12:22:31Z 13253902 7 13253902上传[[文件:房屋 圆木小屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 商住综合楼.png 6 117 926 305 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:商住综合楼.png]]至[[文件:房屋 商住综合楼.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 折顶式小屋.png 6 124 927 313 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:折顶式小屋.png]]至[[文件:房屋 折顶式小屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带阁楼的高层建筑.png 6 127 928 316 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:带阁楼的高层建筑.png]]至[[文件:房屋 带阁楼的高层建筑.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带泳池的高层.png 6 292 929 630 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:带泳池的高层.png]]至[[文件:房屋 带泳池的高层.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带阳台的房子.png 6 291 930 629 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:带阳台的房子.png]]至[[文件:房屋 带阳台的房子.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 摩登高层.png 6 113 931 319 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:摩登高层.png]]至[[文件:房屋 摩登高层.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带花园的高层.png 6 128 932 317 2023-05-08T05:28:35Z 13253902 7 13253902移动页面[[文件:带花园的高层.png]]至[[文件:房屋 带花园的高层.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 海螺屋.png 6 106 933 293 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:海螺屋.png]]至[[文件:房屋 海螺屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 科德角式小屋.png 6 15 934 297 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:科德角式小屋.png]]至[[文件:房屋 科德角式小屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 牧人小舍.png 6 43 935 121 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:牧人小舍.png]]至[[文件:房屋 牧人小舍.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 普通高层.png 6 115 936 303 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:普通高层.png]]至[[文件:房屋 普通高层.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 瓷砖高层.png 6 126 937 315 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:瓷砖高层.png]]至[[文件:房屋 瓷砖高层.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 独户住房.png 6 101 938 288 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:独户住房.png]]至[[文件:房屋 独户住房.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 维多利亚联排别墅.png 6 120 939 308 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:维多利亚联排别墅.png]]至[[文件:房屋 维多利亚联排别墅.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 联排别墅.png 6 111 940 299 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:联排别墅.png]]至[[文件:房屋 联排别墅.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 美式四角楼.png 6 112 941 300 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:美式四角楼.png]]至[[文件:房屋 美式四角楼.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 老房屋.png 6 110 942 298 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:老房屋.png]]至[[文件:房屋 老房屋.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 花园式公寓.png 6 108 943 295 2023-05-08T05:28:36Z 13253902 7 13253902移动页面[[文件:花园式公寓.png]]至[[文件:房屋 花园式公寓.png]],不留重定向:移动房屋图片 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓大楼.png 6 103 944 290 2023-05-08T05:30:03Z 13253902 7 13253902移动页面[[文件:公寓大楼.png]]至[[文件:房屋 公寓大楼.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 高层建筑.png 6 293 945 631 2023-05-08T05:30:42Z 13253902 7 13253902移动页面[[文件:高层建筑.png]]至[[文件:房屋 高层建筑.png]],不留重定向 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 模板:房屋 10 11 946 905 2023-05-08T05:31:44Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间={{{时间|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{{1|}}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> f6adbdc2f5ae10002fcea9541743a559474dbb23 947 946 2023-05-08T05:34:10Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间={{{时间|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{#replace:{{PAGENAME}}|/| }}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> f00efa6b94e712d307ecd057be3d733de0dc33e8 948 947 2023-05-08T05:35:28Z 13253902 7 wikitext text/x-wiki {{#set: |中文={{{中文|}}} |金币={{{金币|}}} |人口={{{人口|}}} |经验={{{经验|}}} |占地={{{占地|}}} |时间={{{时间|}}} |最大数量={{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} }} {{面包屑}} <!--页面开始--> <div class="container main"> <div class="row"> <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3"> {| class="wikitable" style="text-align: center;width:100%" ! {{{中文|}}} |- |<includeonly>[[文件:{{#replace:{{PAGENAME}}|/|_}}.png|class=wiki-bot-img img-kk|link=]]</includeonly> |} </div> <div class="col-xs-12 col-sm-9 col-md-2 col-lg-2"> {| class="wikitable" style="text-align: center;width:100%" ! 最大数量 |- | style="font-size:x-large;"|{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}} |- ! 解锁等级 |- | {{#arraymap:{{{等级|}}}|、|@|{{小星级|@}}{{#set:等级=@}}|}} |} </div> <div class="col-xs-12 col-sm-12 col-md-7 col-lg-7"> {| class="wikitable" style="text-align: center;width:100%" ! width=20%|所需金币 ! width=20%|建造时间 ! width=20%|占地面积 |- | style="font-size:x-large;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:x-large;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{#if:{{{时间|}}}|{{转换时间|{{{时间|}}}}}|}} | style="font-size:x-large;"| [[文件:占地.png|x40px|class=img-kk|link=]]<br>{{{占地|}}} |- ! width=20%|获得人口 ! width=20%|获得经验 |- | style="font-size:x-large;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:x-large;"| [[文件:获得经验.png|x40px|class=img-kk|link=]]<br>+{{{经验|}}} |} </div> </div> <!-- QQ机器人显示信息开始 --> <div class="wiki-bot hidden"> 最大数量:{{#arraydefine:最大数量|{{{等级|}}}|、}}{{#arraysize:最大数量}}<br> 解锁等级:{{{等级|}}}<br> 占地面积:{{{占地|}}}<br> 所需金币:{{{金币|}}}<br> 建造时间:{{#if:{{{时间(天)|}}}|{{{时间(天)|}}}天}}{{#if:{{{时间(时)|}}}|{{{时间(时)|}}}时}}{{#if:{{{时间(分)|}}}|{{{时间(分)|}}}分}}{{#if:{{{时间(秒)|}}}|{{{时间(秒)|}}}秒}}<br> 获得人口:{{#if:{{{人口|}}}|+{{{人口|}}}|}}<br> 获得经验:{{#if:{{{经验|}}}|+{{{经验|}}}|}} </div> <!-- QQ机器人显示信息结束 --> <includeonly>[[分类:房屋]]</includeonly> b0415857e690f64e2a7c37e8a4a136fd60ef35a0 模板:房屋表 10 24 949 906 2023-05-08T05:36:37Z 13253902 7 wikitext text/x-wiki <noinclude> {| class="wikitable" style="width:100%;text-align:center;table-layout:fixed;" ! 房屋 ! 最大数量 ! 所需金币 ! 获得人口 ! 建造时间 {{#ask:[[分类:房屋]] |?中文 |?最大数量 |?金币 |?人口 |?经验 |?时间 |?占地 |named args=1 |link=none |sort=金币 |order=asc |headers=hide |template=房屋表 |format=template |limit=3 |searchlabel= }} |}</noinclude><includeonly>|- |[[文件:{{#replace:{{{1|}}}|/|_}}.png|100px|class=img-kk|link={{{1|}}}]]<br>[[{{{1|}}}|{{{中文|}}}]] | style="font-size:2em;"| {{{最大数量|}}} | style="font-size:2vw;"| [[文件:金币.png|x40px|class=img-kk|link=]]<br>{{{金币|}}} | style="font-size:2vw;"| [[文件:人口.png|x40px|class=img-kk|link=]]<br>+{{{人口|}}} | style="font-size:2vw;"| [[文件:时间.png|x40px|class=img-kk|link=]]<br>{{转换时间|{{{时间|}}}}} </includeonly> 5d12da07eb893a95716fb5fed6793ef5c08dda72 分类:社区建筑 14 374 950 2023-05-08T06:21:58Z 13253902 7 创建空白页面 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 房屋/花园式公寓 0 74 951 884 2023-05-09T08:30:29Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=花园式公寓 |等级=31、35、37、39、90 |金币=1440 |人口=80 |经验=80 |占地=1×2 |时间=960 }} b042060227fb1781432a7ae722d01b9923bffe0c 房屋/光明屋 0 81 952 891 2023-05-09T08:30:45Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=光明屋 |等级=50、51、64、84 |金币=7500 |人口=150 |经验=150 |占地=1×2 |时间=1800 }} 8b3e45926bafaafbd2068757cda4c7fcac18a38e 房屋/瓷砖高层 0 82 953 892 2023-05-09T08:30:48Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=瓷砖高层 |等级=52、53、66、68、86 |金币=9500 |人口=190 |经验=190 |占地=1×2 |时间=1920 }} a00b17c0bf4b73f25389dab8d461bc6f14c398ec 房屋/摩登高层 0 84 954 894 2023-05-09T08:30:52Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=摩登高层 |等级=56、57、74、96 |金币=13500 |人口=270 |经验=270 |占地=1×2 |时间=2040 }} c6cea54b0b6f44eee643d6f423e155611f4ef5ef 房屋/原木屋 0 94 955 896 2023-05-09T08:30:56Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=原木屋 |等级=62、64、66、80、88 |金币=19000 |人口=380 |经验=380 |占地=1×2 |时间=2160 }} 041e981842c48ba07a2e75dd2d8caaaa1c50d969 房屋/双尖塔楼 0 86 956 897 2023-05-09T08:30:58Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=双尖塔楼 |等级=68、70、84、86 |金币=21000 |人口=420 |经验=420 |占地=1×2 |时间=2160 }} d54f968d88191fbc93804371462c99bc4941bac3 房屋/公寓综合楼 0 279 957 900 2023-05-09T08:31:04Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=公寓综合楼 |等级=86、90、98 |金币=46400 |人口=580 |经验=580 |占地=1×2 |时间=2520 }} 26d2042d85d7c413848f2177e240805146bb7de1 房屋/带阳台的房子 0 280 958 901 2023-05-09T08:31:06Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带阳台的房子 |等级=88、98 |金币=51200 |人口=640 |经验=640 |占地=1×2 |时间=2520 }} f9ab6a10edfc8a31deba38775c742d0ca975d27c 房屋/共管公寓(90) 0 283 959 902 2023-05-09T08:31:08Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=共管公寓 |等级=90、96、98 |金币=56000 |人口=700 |经验=700 |占地=1×2 |时间=2640 }} 4bdb5ea8baf9750c3572836f39ecc60086f799b5 房屋/高层建筑 0 281 960 903 2023-05-09T08:31:11Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=高层建筑 |等级=92、94 |金币=61000 |人口=760 |经验=760 |占地=1×2 |时间=2640 }} 38f6acf334f42c47f6ea54f1d9e81e863f04dc1d 房屋/带泳池的高层 0 282 961 904 2023-05-09T08:31:13Z 13253902 7 wikitext text/x-wiki {{房屋 |中文=带泳池的高层 |等级=92、94、96 |金币=66000 |人口=820 |经验=820 |占地=1×2 |时间=2760 }} f6515429dbd41db13c584a92ca15b4d3a2d2582f 文件:房屋 折顶式小屋.png 6 124 963 927 2023-05-09T12:22:31Z 13253902 7 13253902上传[[文件:房屋 折顶式小屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双层楼房.png 6 118 964 921 2023-05-09T12:22:32Z 13253902 7 13253902上传[[文件:房屋 双层楼房.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 别墅.png 6 125 965 919 2023-05-09T12:22:33Z 13253902 7 13253902上传[[文件:房屋 别墅.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 瓷砖高层.png 6 126 966 937 2023-05-09T12:22:33Z 13253902 7 13253902上传[[文件:房屋 瓷砖高层.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带阁楼的高层建筑.png 6 127 967 928 2023-05-09T12:22:34Z 13253902 7 13253902上传[[文件:房屋 带阁楼的高层建筑.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带花园的高层.png 6 128 968 932 2023-05-09T12:22:35Z 13253902 7 13253902上传[[文件:房屋 带花园的高层.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带阳台的房子.png 6 291 969 930 2023-05-09T12:22:35Z 13253902 7 13253902上传[[文件:房屋 带阳台的房子.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 带泳池的高层.png 6 292 970 929 2023-05-09T12:22:36Z 13253902 7 13253902上传[[文件:房屋 带泳池的高层.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 独户住房.png 6 101 971 938 2023-05-09T12:22:37Z 13253902 7 13253902上传[[文件:房屋 独户住房.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 复式公寓.png 6 102 972 924 2023-05-09T12:22:38Z 13253902 7 13253902上传[[文件:房屋 复式公寓.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 高层建筑.png 6 293 973 945 2023-05-09T12:22:39Z 13253902 7 13253902上传[[文件:房屋 高层建筑.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓大楼.png 6 103 974 944 2023-05-09T12:22:40Z 13253902 7 13253902上传[[文件:房屋 公寓大楼.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 公寓综合楼.png 6 294 975 915 2023-05-09T12:22:41Z 13253902 7 13253902上传[[文件:房屋 公寓综合楼.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 共管公寓(90).png 6 375 976 2023-05-09T12:22:42Z 13253902 7 基于MsUpload的文件上传 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 共管公寓.png 6 104 977 914 2023-05-09T12:22:43Z 13253902 7 13253902上传[[文件:房屋 共管公寓.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 光明屋.png 6 105 978 910 2023-05-09T12:22:44Z 13253902 7 13253902上传[[文件:房屋 光明屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 海螺屋.png 6 106 979 933 2023-05-09T12:22:45Z 13253902 7 13253902上传[[文件:房屋 海螺屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 合租房.png 6 107 980 922 2023-05-09T12:22:46Z 13253902 7 13253902上传[[文件:房屋 合租房.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 花园式公寓.png 6 108 981 943 2023-05-09T12:22:47Z 13253902 7 13253902上传[[文件:房屋 花园式公寓.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 匠心小栋.png 6 109 982 916 2023-05-09T12:22:48Z 13253902 7 13253902上传[[文件:房屋 匠心小栋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 科德角式小屋.png 6 15 983 934 2023-05-09T12:22:49Z 13253902 7 13253902上传[[文件:房屋 科德角式小屋.png]]的新版本 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 老房屋.png 6 110 984 942 2023-05-09T12:22:50Z 13253902 7 13253902上传[[文件:房屋 老房屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 联排别墅.png 6 111 985 940 2023-05-09T12:22:51Z 13253902 7 13253902上传[[文件:房屋 联排别墅.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 美式四角楼.png 6 112 986 941 2023-05-09T12:22:52Z 13253902 7 13253902上传[[文件:房屋 美式四角楼.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 摩登高层.png 6 113 987 931 2023-05-09T12:22:53Z 13253902 7 13253902上传[[文件:房屋 摩登高层.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 牧人小舍.png 6 43 988 935 2023-05-09T12:22:54Z 13253902 7 13253902上传[[文件:房屋 牧人小舍.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 农舍.png 6 114 989 917 2023-05-09T12:22:55Z 13253902 7 13253902上传[[文件:房屋 农舍.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 普通高层.png 6 115 990 936 2023-05-09T12:22:56Z 13253902 7 13253902上传[[文件:房屋 普通高层.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 三角顶小屋.png 6 116 991 911 2023-05-09T12:22:57Z 13253902 7 13253902上传[[文件:房屋 三角顶小屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 商住综合楼.png 6 117 992 926 2023-05-09T12:22:58Z 13253902 7 13253902上传[[文件:房屋 商住综合楼.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 双尖塔楼.png 6 119 993 918 2023-05-09T12:22:59Z 13253902 7 13253902上传[[文件:房屋 双尖塔楼.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 维多利亚联排别墅.png 6 120 994 939 2023-05-09T12:23:00Z 13253902 7 13253902上传[[文件:房屋 维多利亚联排别墅.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 小屋.png 6 19 995 923 2023-05-09T12:23:01Z 13253902 7 13253902上传[[文件:房屋 小屋.png]]的新版本 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 文件:房屋 一厅一室房.png 6 121 996 913 2023-05-09T12:23:02Z 13253902 7 13253902上传[[文件:房屋 一厅一室房.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 文件:房屋 原木屋.png 6 122 997 920 2023-05-09T12:23:03Z 13253902 7 13253902上传[[文件:房屋 原木屋.png]]的新版本 wikitext text/x-wiki 基于MsUpload的文件上传 a13cb97e12beb36c5e09351cbbe1d01f12e99668 沙盒 0 32 998 433 2023-05-31T14:40:24Z 13253902 7 编辑数据 wikitext text/x-wiki 页面内容 12af9388dc4c96cfd7505525235b818b85fe5237 1000 998 2023-06-16T05:52:21Z 13253902 7 wikitext text/x-wiki {| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable" |- ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |} 2c5a1d876babcad6c00b19d836977b2f7b2be722 1002 1000 2023-06-16T06:32:19Z 13253902 7 wikitext text/x-wiki {| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable" |- id="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |} a71ad6d5b475d4dc1abda9d6f2dcf8f810058cd3 1005 1002 2023-06-16T07:09:59Z 13253902 7 wikitext text/x-wiki <div class="bikit-loader" data-src="MediaWiki:Check-toggle.js" data-mime="text/javascript"></div> <!-- {{#Widget:沙盒}} --> {| id="table" data-toggle="table" data-search="true" data-show-columns="true" data-show-multi-sort="true" class="wikitable" |- id="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |} ed5cb07f4255775d1b9e4d7a9351ac60343d2c4d 1008 1005 2023-06-16T14:20:57Z 13253902 7 wikitext text/x-wiki {{#Widget:沙盒}} {| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center" |- id="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |}{{#css: .bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;} .multi-sort{height: 34px;} }} 39fbe17805576a56c084dd46b3da11569f2c16a3 Widget:沙盒 274 377 1001 2023-06-16T05:53:53Z 13253902 7 创建页面 wikitext text/x-wiki <includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script> <script src="https://cdn.bootcss.com/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> d3056db454a0da0ee2dac5e3ed9e8a1384d0511c 1003 1001 2023-06-16T06:33:22Z 13253902 7 wikitext text/x-wiki <includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.bootcss.com/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> 40b7f0fc3313bc5f13705ecef5f924dd67e14587 1006 1003 2023-06-16T12:04:46Z 13253902 7 wikitext text/x-wiki <includeonly><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.4.1/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> ab855a108ecf170028249c8db184284330ff892f 1007 1006 2023-06-16T13:33:18Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> afa19b32cab42193d6d8f6f21fa762be6ceb0bb0 1009 1007 2023-06-16T14:21:39Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> 431f1a954bb96ac65bf4d14c3d8ecaf85959708c 1010 1009 2023-06-16T14:22:51Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> d2e1c9d1a8132d937da72417bbabc133b022c5d1 1011 1010 2023-06-16T14:23:56Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> dff453d6ad469d74b35239cc3983d35e5a87295f 1012 1011 2023-06-16T14:24:17Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> afa19b32cab42193d6d8f6f21fa762be6ceb0bb0 1013 1012 2023-06-19T05:46:26Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> 7373b6a155e3673088e77a3b9712af92972c2778 MediaWiki:Test.js 8 378 1004 2023-06-16T07:07:57Z 13253902 7 创建页面 javascript text/javascript $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); mw.loader.load( 'https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css', 'text/css' ); mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js?action=raw&&ctype=text/javascript'); mw.loader.load('https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js?action=raw&&ctype=text/javascript'); mw.loader.load('https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js?action=raw&&ctype=text/javascript'); 7bfcbc2d8a128cd62b8ff2e17e85dc11938c8087 Widget:沙盒 274 377 1014 1013 2023-06-19T05:47:19Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> 84472ea5c60bf044da78b1d6027fd1adba4db361 1015 1014 2023-06-19T05:47:56Z 13253902 7 wikitext text/x-wiki <includeonly> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> fdaf4f1654c990defb3a2486b2e995bed2b8d18d 1016 1015 2023-06-19T05:49:11Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> e0bf04c2b4ce3f03aeb9bd6112e631fc6c90e403 1018 1016 2023-06-20T05:38:15Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> dec90cd71e390785739c13bac7d7c02cce70af48 1019 1018 2023-06-20T05:41:20Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> </includeonly> 41abf7f4763d60f0af58185f144cf40b26182926 1020 1019 2023-06-20T05:44:15Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); }); </script> </includeonly> c7dfcec47d3c1bc20b5118cbd182f656a3d13110 1021 1020 2023-06-20T06:17:00Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); </script> </includeonly> 10614348fab12b7c21cb0ad00b420a895bd3febf 1023 1021 2023-06-20T13:32:48Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> 05c648c4f9068d49d7f7f605b52317d24f55bdb2 1024 1023 2023-06-20T13:35:34Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $("#add").on("blur ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> 6cbcb82fb7235d49bf6a9ad99dd57f6f3116502e 1025 1024 2023-06-20T14:00:01Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $("#add").on("blur ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); if ($("#sortModal_table").hasClass("in")) { $("body").css("padding-right", "0"); } else{ $("body").css("padding-right", "0"); } $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> 3ec26c73d3cda2a8c0e6321fe4560c33a96d91b1 1026 1025 2023-06-20T14:09:46Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $("#add").on("blur ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> 6cbcb82fb7235d49bf6a9ad99dd57f6f3116502e 1029 1026 2023-06-20T14:30:40Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('.thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $("#add").on("blur ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> 7f423332e6bd8a3696b0664e9a0a9c5e7bba2c77 1030 1029 2023-07-07T02:04:16Z 13253902 7 wikitext text/x-wiki <includeonly> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"> --> <link rel="stylesheet" href="https://cdn.staticfile.org/bootstrap-table/1.22.1/bootstrap-table.min.css"> <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script> <script> $(document).ready(function() { $('tbody').contents().unwrap(); $('.thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); </script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/bootstrap-table.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/locale/bootstrap-table-zh-CN.min.js"></script> <script src="https://cdn.staticfile.org/bootstrap-table/1.22.1/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js"></script> <script> $(function(){ $(".multi-sort").on("click",function(){ $(".multi-sort-order-button").attr("data-dismiss", "modal"); }); $("#add").on("mouseleave ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $("#add").on("blur ",function(){ $('td:contains("Then by")').text('次要依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); }); $('#add').html('<i class="glyphicon glyphicon-plus"></i> 添加'); $('#delete').html('<i class="glyphicon glyphicon-minus"></i> 删除'); $('#sortModal_tableLabel').text('多重排序'); $('th:contains("Column")').text('列'); $('th:contains("Order")').text('排序'); $('td:contains("Sort by")').text('排序依据'); $('option[value="asc"]').text('升序'); $('option[value="desc"]').text('降序'); $('.multi-sort-order-button').text('排序'); $('button:contains("Cancel")').text('取消'); }); </script> </includeonly> efedf93f4badbf2b6fb38a0a03a61186e24eb895 MediaWiki:Test.js 8 378 1017 1004 2023-06-19T05:53:43Z 13253902 7 javascript text/javascript // mw.loader.load('https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js?action=raw&&ctype=text/javascript'); $(document).ready(function() { $('tbody').contents().unwrap(); $('#thead').wrap('<thead></thead>'); $('thead').nextAll('tr').wrapAll('<tbody></tbody>'); }); // mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css','text/css'); mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.css','text/css'); // mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js?action=raw&&ctype=text/javascript'); mw.loader.load('https://cdn.jsdelivr.net/npm/bootstrap-table@1.21.4/dist/bootstrap-table.min.js?action=raw&&ctype=text/javascript'); mw.loader.load('https://cdn.staticfile.org/bootstrap-table/1.21.4/locale/bootstrap-table-zh-CN.min.js?action=raw&&ctype=text/javascript'); mw.loader.load('https://unpkg.com/bootstrap-table@1.21.4/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js?action=raw&&ctype=text/javascript'); abfce48b257f74c78c13ea1e6d8b03da9956081d 沙盒 0 32 1022 1008 2023-06-20T13:17:19Z 13253902 7 wikitext text/x-wiki {{#Widget:沙盒}} {| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center" |- id="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |}{{#css: .bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;} .multi-sort{height: 34px;} #multi-sort{margin-top: 15px;} }} c8ba73fe74772e7a83860a86d254903ad41e0a30 1027 1022 2023-06-20T14:23:09Z 13253902 7 wikitext text/x-wiki {{#Widget:沙盒}} {| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center" |- id="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |}{{#css: .bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;} .multi-sort{height: 34px;} #multi-sort{margin-top: 15px;} body{padding:0!important;} }} 3c6806c9ba12c8bb4d528f9048d129819726aafc 1028 1027 2023-06-20T14:30:15Z 13253902 7 wikitext text/x-wiki {{#Widget:沙盒}} {| id="table" data-toggle="table" data-search="true" data-show-multi-sort="true" data-show-multi-sort-button="true" class="wikitable text-center" |- class="thead" ! data-field="name" data-sortable="true"|名称 ! data-field="rank" data-sortable="true"|等级 ! data-field="size" data-sortable="true"|大小 |- |111 |58 |1x1 |- |222 |60 |2x2 |- |333 |62 |3x2 |}{{#css: .bootstrap-table .fixed-table-container .fixed-table-body{height:auto!important;} .multi-sort{height: 34px;} #multi-sort{margin-top: 15px;} body{padding:0!important;} }} 81b9733156bee5bc4a42806969bac48d1de774fe